restAssured – 不能掌握post方法

同胞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,所以我恳求我的赦免newby问题。

谢谢!

PS我真的很感谢任何帮助Post方法和把数据放入正文

我认为你使用RestAssured和HashMap是正确的。 我想你是从这个API获得400,因为你指定的id属性。 通过在Google的API资源管理器中玩这个,我能够通过这样做产生400个错误。 根据文档 ,你需要为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" } """