我的功能文件中的一个步骤需要两个参数,如登录名和密码,用于多个系统,每个系统都可以正常工作,但是有什么方法可以为各个步骤传递多个示例吗?功能文件中的第一步是调用POSTAPI并根据参数获取响应。场景大纲:验证搜索结果给定我在Header中设置了授权令牌,其中包含以下功能文件正文有效负载
| Key | Value |
|InstituteID| <InstitutionID> |
|InstituteID|
|1234456 |
|1345679 |
|4564565 |
第二步是:
用户输入"
|Username|Password |
|test |abc |
|test2 |abc |
你能分享一下是否有什么方法可以实现这一点吗?我可以像上面提到的那样在一个场景大纲中传递多个示例吗?我需要步骤1中的一些响应来执行步骤2,这样我就不能分成两个场景。谢谢你。
是的,您可以传递多个示例。我给你举个例子:
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
}
您不能为单个步骤编写示例,只能为整个场景大纲编写示例。
但是您可以编写尽可能多的示例并在其中混合您的参数
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 |