首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >restAssured -无法掌握post方法

restAssured -无法掌握post方法
EN

Stack Overflow用户
提问于 2017-04-29 18:41:36
回答 1查看 531关注 0票数 1

堆积如山的人:)

我已经用Gmail完成了一个Post调用。一直在尝试使用createDraft和createLabel。现在,我想我已经找到了如何正确地(大部分)地这样做,但是我得到了这个错误:

代码语言:javascript
复制
    java.lang.AssertionError: 1 expectation failed.
Expected status code <200> but was <400>.

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

你们能帮我吗?这是我的密码:

代码语言:javascript
复制
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不正确,或者我使用了一些不正确的body字段。我才刚开始学习restAssured,所以我请求原谅newby的问题。

谢谢!

我非常感谢您对Post方法的帮助,以及将data放入body中的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-29 22:40:52

我认为你对RestAssured和HashMap的使用是正确的。我认为您从这个API中获得了400个,因为您指定了id属性。通过在Google的API资源管理器中使用它,我能够通过这样做生成400个错误。根据文献资料,您唯一需要为POST/Create指定的东西是:labelListVisibilitymessageListVisibilitynameid作为响应的一部分返回给您。

RestAssured的一个好特性是,您可以让它记录它在发生错误或始终存在时发送或接收的内容。

记录所有请求:

代码语言:javascript
复制
given().log().all()

记录所有响应:

代码语言:javascript
复制
`when`().log().all()

或者当验证失败时:

代码语言:javascript
复制
`when`().log().ifValidationFails()

使用它将给您一个更精确的原因,为什么您与API的交互失败了,因为它将显示Google返回的内容。所以我们可以肯定地看到我对id的看法是否正确。

由于您似乎正在为此使用Kotlin,所以您可能希望利用其强大的多行字符串功能,只需手动创建JSON有效负载:

代码语言:javascript
复制
val body = """
    {
        "labelListVisibility": "labelShow",
        "messageListVisibility": "show",
        "name": "ThisIsATest"
    }
"""
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43699258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档