0

我的功能文件中的一个步骤需要两个参数,例如多个系统的登录名和密码,它们单独工作正常,但是有什么方法可以为各个步骤传递多个示例?功能文件中的第一步是调用 POST API 并根据参数获取响应。场景大纲:验证搜索结果给定我在 Header 中使用以下功能文件正文有效负载设置了授权令牌

| Key       | Value           | 
|InstituteID| <InstitutionID> |         
|InstituteID|
|1234456    |
|1345679    |
|4564565    |

第二步是:

用户输入"<Username>", "<Password>"并点击登录按钮

|Username|Password |
|test    |abc      |
|test2   |abc      | 

您能否分享一下是否有任何方法可以实现这一目标?我可以像上面提到的那样在一个场景大纲中传递多个示例吗?我需要步骤 1 的一些响应来执行步骤 2,所以我不能分成两种情况。谢谢你。

4

2 回答 2

1

是的,您可以传递多个示例。我给你举个例子:

Scenario Outline: I want to login
    Given I am on the login page
    Then I log in with "<Username>" and "<Password>"
    
    Examples:
        |  Username  |  Password  |
        |  User1     |  12345678  |
        |  User2     |  12345679  |
        |  User3     |  12345670  |

现在,对于每个示例,上述场景将运行 3 次。

在步骤文件中,您可以创建如下函数:

@Given("^I am on the login page$")
public void navigate_to_login_page() {
    //some logic
}

@Then("^I login with "([^\"]*)\" and "([^\"]*)\"$")
public void login(String username, String pass) {
    //some logic
}
    
于 2020-08-10T06:41:59.840 回答
0

您不能为单个步骤编写示例,而只能为整个场景大纲编写示例。

但是您可以编写任意数量的示例并将参数混合在其中

Examples:
|Username|Password|InstituteID| 
|test    |abc      |1234456    |
|test    |abc      |1345679    |
|test    |abc      |4564565    |
|test2   |abc      |1234456    |
|test2   |abc      |1345679    | 
|test2   |abc      |4564565    | 

编辑1:

А DataTable 可以帮助你

像这样定义胶水代码,注意方法参数DataTable:

    @When("A POST API is called with parameters:")
    public void callPostApi(DataTable table) {
        List<List<String>> rows = table.cells(1); // skip the header
        for (List<String> row : rows) {
           String parameter = row.get(0);
           // Call the POST API for the parameter here, save, check the results etc.
        }
    }

并在 .feature 文件中使用它

  When A POST API is called with parameters:
  | Parameter | 
  | 123       |
  | 456       |
  | 789       |
  | abc       |
  | def       |
于 2020-08-10T07:42:00.133 回答