我正在测试一个大约有100个用户名和密码的场景。我应该逐个使用每个用户名 - 密码对,然后尝试登录到应用程序。注销。再次在同一浏览器中登录而不关闭它。如果任何凭证无效,则只应将该特定行标记为失败,并且应继续执行
我试图搜索解决方案但无法获得任何正确的解决方案
Scenario: To test if the given list of users credentials are valid
Given user is already at Login page
And user enters credentails
| Username | Password |
| user1 | password1 |
| user2 | invalid |
| user3 | password3 |
| user4 | password4 |
| user5 | password5 |
| user6 | password6 |
| user7 | password7 |
此处,第二行数据表的状态应在报告中标记为失败,除失败的数据外,应执行其余数据。传递的数据应在报告中标记为PASS。如何实现这一目标。
首先,您需要按照以下大纲修改方案。
Scenario Outline: To test if the given list of users credentials are valid
Given user is already at Login page
And In credentails, user enters name as <Username> and Pwd as <Password>
Examples: Checking Login Scenarios
| Username | Password |
| user1 | password1 |
| user2 | invalid |
第二个让我们考虑下面是你的步骤实现
package my.package.name
import cucumber.api.PendingException;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.And;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
public class MyStepDefinitions {
@Given("^user is already at Login page$")
public void user_is_already_at_login_page() throws Throwable {
throw new PendingException();
}
@And("^In credentails, user enters name as (.+) and Pwd as (.+)$")
public void in_credentails_user_enters_name_as_and_pwd_as(String username, String password) throws Throwable {
throw new PendingException();
}
}
第三个让我们说在上面的步骤实现中,你写入操作登录到站点并且操作失败,因为密码无效。现在,根据您使用的报告,您需要根据报告的API编写一个方法,就像我正在共享范围一样。
public static synchronized void logFail(String message) {
try {
testReport.get().fail("<details>" + "<summary>" + "<b>" + "<font color=" + "red>" + "</font>" + "</b >" + "</summary>" + "<br>" + "<h6>" + "<b>" + BasePage.returnLocator(message) + "</b>"+ "</h6>" + "</br>" + message +"</details>"+" \n");
}
catch(Exception e) {
}
}
最后,按照上面的层次结构,您可以在报告中打印Passed / Failed。