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
指定的唯一东西是: labelListVisibility
, messageListVisibility
和name
。 该id
作为响应的一部分返回给您。
RestAssured的一个很好的特性是,当出现错误或者所有的时候,你都可以记录它发送或接收的内容。
记录所有请求:
given().log().all()
记录所有回复:
`when`().log().all()
或者当验证失败时:
`when`().log().ifValidationFails()
使用它会给你一个更精确的原因,你为什么与API的交互失败,因为它会显示任何Google正在发回。 所以我们可以肯定地看到,如果我对这个id
是正确的。
而且,由于您似乎正在使用Kotlin,所以您可能需要利用其卓越的多行字符串功能,并手动创建JSON有效负载:
val body = """ { "labelListVisibility": "labelShow", "messageListVisibility": "show", "name": "ThisIsATest" } """