我正在使用Rest Asaud Framework进行API测试(使用Java)。在第(1)行,我预计会出现错误,因为预期的JSON响应和实际的JSON响应不匹配。但是我的代码正在成功执行。有人能告诉我下面的代码是否出错了吗?
public void test123() {
try {
//Read the Curl Request Input file
String json = input.readFromTextFile(
System.getProperty("user.dir") + "\\src\\test\\resources\\inputFile\\CurlDataFile.txt");
json = json.replaceAll(" ", "");
RestAssured.baseURI = "My URL";
given().
contentType("application/json").
body(json).
when().
post("").
then().
assertThat().body(matchesJsonSchemaInClasspath("testCurlOuput1.json")); (1)
} catch (IOException e) {
e.printStackTrace();
}catch(JsonSchemaValidationException e){
e.printStackTrace();
}
}
最后,我选择不同的库,即jayway.restassured库和JSON断言库(org.skyscreamer.jsonassert.JSONAssert),这将比较实际和预期的响应。
public void test123() {
String postData = input.readFromTextFile(System.getProperty("user.dir") + "\\src\\test\\resources\\inputFile\\CurlDataFile.txt");
RestAssured.baseURI = "MY URL";
Response r = (Response)given().contentType("application/json").body(postData).when().post("");
String responseBody = r.getBody().asString();
String curlResponse = //I am providing expected Curl response here
//JSON Assertion for matching Expected and Actual response
JSONAssert.assertEquals(curlResponse, responseBody, false);
}
此外,有时我们可能希望避免比较JSON中的特定字段,比如动态生成的ID字段,我们可以使用JSON比较器进行比较
您正在捕获所有异常。当您的assertthat(…)失败时,它会抛出一个异常。在e.printStackTrace()上放置一个断点;在DEBUG模式下运行并检查您的AssertionException/Error是否没有被捕获。
不要捕获异常,只需将所有Checked Exception添加到测试签名中即可。如果未发现异常,则测试将失败。或者,但在我看来不太喜欢,通过放fail()来解决;在锁扣块中。
这与放心没有直接关系,但我建议你看一看空手道,因为依我看它可能正是你要找的。
空手道的核心特性之一是您可以在一个步骤中执行JSON有效负载的完全相等匹配。
您可以轻松地从文件中使用JSON,这鼓励在多个测试中重用有效负载。
问题内容: 即时通讯在JSON中获取响应,但这不会解析JSON响应。我在做什么错?我在doc http://docs.jquery.com/Plugins/Autocomplete上找不到任何内容 问题答案: 检查dataType和parse选项。
APIService: 在活动调用API中:
我正在使用Volley向API发出GET请求: 预期的JSON对象响应很大(可能高达500 KB)。我无法在日志中看到完整的响应。仅显示前50行左右。我还得到了info: BasicNetwork.log慢速请求:请求的HTTP响应= 这意味着请求需要超过3000毫秒。 尝试过的事情: 我已经在手机的开发者选项中将记录器缓冲区大小增加到1M。 原因可能是什么?当它很大的时候,响应是大块发送的吗?如
问题内容: 背景 我正在客户端使用HTTP流(服务器推送)情况下的响应。尽管服务器可以通过关闭响应来关闭连接,但是客户端也需要这样做。 问题 客户端在一个单独的线程中处理,如下所示: 因此,当我从发起连接的线程进行调用时(重要的信息是它与处理输入的线程不同),该调用将无限期挂起。我什至把它留了一夜,它仍然挂着。即使打电话也无济于事。 有什么建议吗? 问题答案: 在没有可用字节的情况下,如果不更改读
我已将自动完成功能应用于两个。为此,我使用了自动完成计算器。我观察到它的速度减慢到我甚至无法输入一个字符的程度。有什么解决办法吗? 谢谢
我正在使用REST Assured测试一些API。我的API清楚地用JSON响应,如果这是响应,则根据文档: 我可以这样测试: 当然,这是可读的,但我会对JSON进行全面的比较(即:这是JSON响应;这是一个固定的JSON——一个资源文件将是完美的——那些JSON相等吗?).放心提供类似的东西,还是我需要手动制作。