其他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。我非常感谢您对发布方法的任何帮助,并将数据置于正文
答案 0 :(得分:1)
我认为您使用RestAssured和HashMap是正确的。我认为您从此API获得400,因为您指定了id
属性。通过在Google的API资源管理器中使用此功能,我可以通过这样做生成400个错误。根据{{3}},您需要为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"
}
"""