我从API自动化测试开始,所以我不知道如何使用Cucumbers步骤来验证API响应。
我使用以下步骤创建cucumber功能:
@criarConta
Scenario Outline: Criar uma conta valida
Given que realizo a chamada no <ambiente> da <api> informando <token_admin> e um email e <senha> novos
Then devera retornar <status code>
And no response devera retornar um valor de "ID" ou "Message"
在我的“dataMap”类上,我正在执行休耕请求并验证:
public void criarConta(String srtAmbiente, String srtAPI, String srtToken, String srtSenha) {
String uriBase = srtAmbiente;
RequestSpecification apiRequest = RestAssured.given().contentType(ContentType.JSON);
int length = 15;
String email = generateRandomEmail(length);
System.out.println(email);
Map<String, String> emailContent = new HashMap<String,String>();
emailContent.put("email", email);
Map<String, Object> postContent = new HashMap<String,Object>();
postContent.put("customer", emailContent);
postContent.put("password", srtSenha);
apiRequest.header("Authorization", "Bearer "+srtToken).with().body(postContent);
Response response = apiRequest.post(uriBase+srtAPI).prettyPeek();
ResponseBody body = response.getBody();
String bodyStringValue = body.asString();
Assert.assertTrue(bodyStringValue.contains("id"));
JsonPath jsonPathEvaluator = response.jsonPath();
String responseEmail = jsonPathEvaluator.get("email");
Assert.assertTrue(responseEmail.equalsIgnoreCase(email));
}
但是在我的“步骤”类中,我需要调用cucumber步骤,我的请求和验证代码都在同一个方法上。如何在方法中调用请求,在另一个方法中调用响应,以使用cucumber步骤?谢谢
要在一个步骤中从系统收集响应,并在另一个步骤中将其断言,您需要使用World对象或Scenario Context在步骤之间共享数据。完全公开,我更熟悉用ruby/php/javascript解决这个问题,但Java的原理应该是一样的。
一个好的起点可能是分解你的criarConta
方法,目前它捆绑了几个不同的关注点——构建请求、发送请求、解析响应和断言响应值。我建议将请求分成一个方法,将响应解析成另一个方法,并从你的当
和然后
步骤中调用这两个方法。
断言应完全提取,并在 Then
步骤中直接调用。通常,像 dataMap
这样的类将是系统接口的纯抽象(类似于页面对象是 UI 的抽象),但对系统“应该”如何行为没有意见。这些应该保留在步骤def中,与它们所代表的小cucumber紧密相连。
你应该尝试使用QAF和qaf-ws-support来使用小cucumber。它为webservice测试提供支持,并内置了使用jsonpath/xpath对json/XML响应进行断言验证的步骤。请求调用存储库允许您将请求信息移出代码。
您的实现将变得整洁干净,只需最少的代码或没有代码。下面是一个示例:
SCENARIO: <scenario name>
When user requests '${get.sample.call}'
Then response should have status code '<status code>'
And response should have '<expectedvalue1>' at '<jsonpath1>'
And response should have '<expectedvalue2>' at '<jsonpath2>'
:
:
END
问题内容: 使用标准的Rails form_for,我可以通过select和collection_select助手传递ajax请求,例如: 我似乎无法弄清楚如何使用simple_form 问题答案: 弄清楚了。您只需要添加以下内容:
问题内容: 我刚刚开始使用nodejs。我想知道是否有一种方法只能在应用程序中“一次”请求文件。我正在使用一个类框架来在我的JS项目中获取经典的OOPS。每个“类”都包含在其自己的JS文件中。我想“要求”每个文件中的类框架,以便它们可以独立运行,但希望框架的初始化代码仅执行一次。 我可以使用一个标志来自己实现,但是内置的方法会很好。搜索“ require一次”使我想到所有与PHP有关的问题。 问题
假设我有一个实现JSON HTTP API的现有Java服务,我想添加一个Swagger模式,并根据它自动验证请求和响应,而不需要重新调整服务来使用Swagger框架/代码生成。有没有什么可以提供Java API,让我可以绑定并传递关于请求/响应的信息来进行验证? (仅使用JSON模式验证器意味着手动实现Swagger中的许多附加功能。)
问题内容: 有没有一种方法可以设置节点js https请求的源端口?我不是在询问目的地,而是在询问来源,即用于发送请求的端口。 上下文是我试图从特定端口而不是随机端口发送https请求,从而允许锁定iptables。节点未以root用户身份运行,因此端口不是443。 更新:看来Node中有一个错误。选项localAddress和localPort至少在TLS套接字中不起作用。 更新:发现与去年类似
当前我的控制器看起来是这样的。 有没有更简单的方法为两个不同的路径“localhost:port/members”和“localhost:port/members/index”使用一个index-method?一般情况下,我可以为一个方法注释两个值吗? 提前致谢:) 编辑:我已经看到它对@RequestMapping起作用了
本文向大家介绍请使用css画一个圆,方法可以多种相关面试题,主要包含被问及请使用css画一个圆,方法可以多种时的应答技巧和注意事项,需要的朋友参考一下 1.border-radius 2.clip-path 3.svg background 4.radial-gradient 5.font 6.mix-blend-mode