restAssured - 无法掌握post方法

时间:2017-04-29 18:41:36

标签: java automated-tests kotlin gmail-api rest-assured

其他stackoverflowians :)

我一直想要使用Gmail API拨打电话。 一直在尝试使用createDraft和createLabel。 现在我想我已经找到了如何正确地做到这一点(大多数情况下)但是我得到了这个错误:

    java.lang.AssertionError: 1 expectation failed.
Expected status code <200> but was <400>.

我意识到发生此错误是因为我提出了错误的请求。

你们,伙计们能帮助我吗? 这是我的代码:

import io.restassured.RestAssured.*
import io.restassured.http.ContentType
import io.restassured.matcher.RestAssuredMatchers.*
import org.hamcrest.Matchers.*
import org.testng.annotations.Test




class RestAPIAutoTestPost {
    @Test
    fun createLabelInGoogleMail() {
        RestAssured.baseURI = "https://www.googleapis.com/gmail/v1/users/me"
        val accessToken = "ya29.Glw7BEv6***"

        val jsonAsMap = HashMap<String, Any>()
        jsonAsMap.put("id", "labelAPITestNameID")
        jsonAsMap.put("labelListVisibility", "labelShow")
        jsonAsMap.put("messageListVisibility", "show")
        jsonAsMap.put("messagesTotal", "0")
        jsonAsMap.put("messagesUnread", "0")
        jsonAsMap.put("name", "labelAPITestName")
        jsonAsMap.put("threadsTotal", "0")
        jsonAsMap.put("threadsUnread", "0")
        jsonAsMap.put("type", "user")


        given().
                contentType(ContentType.JSON).
                body(jsonAsMap).

        `when`()
                post("/labels?access_token=$accessToken").
        then().
                statusCode(200)
    }

}

我想我错误地使用了HashMap,或者我使用了一些不正确的正文字段。 我刚刚开始学习 restAssured 所以我请求赦免新问题。

谢谢!

P.S。我非常感谢您对发布方法的任何帮助,并将数据置于正文

1 个答案:

答案 0 :(得分:1)

我认为您使用RestAssured和HashMap是正确的。我认为您从此API获得400,因为您指定了id属性。通过在Google的API资源管理器中使用此功能,我可以通过这样做生成400个错误。根据{{​​3}},您需要为POST/Create指定的唯一内容是:labelListVisibilitymessageListVisibilityname。作为回复的一部分,id将返回给您。

RestAssured中的一个很好的功能是,当出现错误或所有时间时,您可以记录它发送或接收的内容。

记录所有请求:

given().log().all()

记录所有回复:

`when`().log().all()

或者只是在验证失败时:

`when`().log().ifValidationFails()

使用它可以更准确地说明您与API的互动失败的原因,因为它会显示Google正在发回的内容。因此,我们可以确定我是否正确id

由于您似乎正在使用Kotlin,您可能希望利用其出色的多线字符串功能并手动创建JSON有效负载:

val body = """
    {
        "labelListVisibility": "labelShow",
        "messageListVisibility": "show",
        "name": "ThisIsATest"
    }
"""