堆积如山的人:)
我已经用Gmail完成了一个Post调用。一直在尝试使用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不正确,或者我使用了一些不正确的body字段。我才刚开始学习restAssured,所以我请求原谅newby的问题。
谢谢!
我非常感谢您对Post方法的帮助,以及将data放入body中的帮助。
发布于 2017-04-29 22:40:52
我认为你对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"
}
"""https://stackoverflow.com/questions/43699258
复制相似问题