java - java - 如何存储请求中的值并检查java cucumber中的响应?
问题描述
我正在使用 cucumber java,我无法确定如何从我的请求中获取一个值并在响应中验证它。
例如,在我的功能文件中:
When I use numbers 123
Then the response matches the request
所以我有代码通过我的请求:
@Step
public void searchUsingNumber(String number) throws Exception{
validatableResponse = with()
.baseUri("https://xxx")
.param("numbers", number)
.get().then();
}
在我的步骤定义中,它是这样设置的:
@When("^I use numbers \"([^\"]*)\"$")
public void iUseNumbers(String number) throws Throwable {
eventsMethods.searchUsingNumber(number);
}
这输出 123。
不,我想在 Then 语句中查看我的回复:
public String number() {
String number = validatableResponse.extract().jsonPath().get("number").toString();
log.info("number is: " + number);
return number;
}
------------
@Then("^the response matches the request$")
public void theResponseMatchesTheRequest(){
String number= eventsMethods.number();
}
这输出 123。但我想在 Then 语句中执行断言以检查响应 123 与请求中的 123 匹配。换句话说,从 when 语句中获取值并针对响应中的值进行断言。
做这个的最好方式是什么?
解决方案
你可以使用一个Scenario Outline:
在功能文件中
Scenario Outline: test the response
Given the compute page is open
When I use numbers "<number>"
Then the response matches the request "<number>"
Examples:
| number |
| 123 |
| 42 |
胶水代码
@When("^I use numbers \"([^\"]*)\"$")
public void iUseNumbers(String number) throws Throwable {
...
}
@Then("^the response matches the request \"([^\"]*)\"$")
public void theResponseMatchesTheRequest(String number) throws Throwable {
...
}
推荐阅读
- terraform - 用于 Azure Key Vault 的 Terraform 和导出块版本的属性
- c++ - 数组大小模板扣除
- javascript - 弹跳球边界故障
- typescript - 如何获得对打字稿友好的服务工作者注册对象?
- python - 在每个任务之前进行一些设置的蝗虫方法
- azure-sql-database - 如何将 Azure SQL 数据库中的 sys.event_log 中的记录复制到另一个数据库中的用户定义表中
- excel - 有没有更快的方法将大量数据粘贴到 Excel 表格中?
- asp.net - 如何从 ASP.Net 中经过 Azure AD 身份验证的用户获取职位或部门?
- pandas - 我可以将多个熊猫索引与一个合并吗?
- kotlin - 如何使用 spring-cloud-function 使用 Kafka-events,但有时会产生