首页 > 解决方案 > 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 语句中获取值并针对响应中的值进行断言。

做这个的最好方式是什么?

标签: javacucumber

解决方案


你可以使用一个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 {
    ...
}

推荐阅读