java-Selenium和TestNG同时使用’dependsOn’和’priority =’问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-Selenium和TestNG同时使用’dependsOn’和’priority =’问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6925字,纯文字阅读大概需要10分钟。
内容图文
![java-Selenium和TestNG同时使用’dependsOn’和’priority =’问题](/upload/InfoBanner/zyjiaocheng/678/adb97e3fee4c4f9d9af6dd381ee613d2.jpg)
我正在努力在GUI自动化测试中实施更好的工作流控制.我首先开始使用dependsOn,但是很快发现缺点是,如果一个测试失败,则套件的其余所有部分都不会运行.所以我改用’priority =’,但是看到了意外的行为.一个例子:
@Test(priority = 10)
public void login(){...}
@Test(priority = 20, dependsOnMethods = "login")
public void verifyUserLogin() {...}
@Test(priority = 30, dependsOnMethods = "verifyUserLogin")
public void navigateToReportSettings() {...}
@Test(priority = 40, dependsOnMethods = "navigateToReportSettings")
public void verifyGeneralSettings() {...}
@Test(priority = 40, dependsOnMethods = "navigateToReportSettings")
public void verifyReportingPeriod() {...}
...
@Test(priority = 90, dependsOnMethods = "navigateToReportSettings")
public void saveReportSettings() {...}
我想发生的事情:
>登录.
>确认用户已登录.
>导航至报告设置页面.
>在报告设置页面上验证常规设置和报告期限(以任何顺序)
>进行一些更改并保存.
>重要:10、20和30必须成功或跳过其余部分.如果有40个失败,则在完成所有40个失败后继续到50.但不依赖任何40步就能成功!
怎么了:
>登录(优先级10).
>保存(优先级90).
注意:也有“组”注释,但我认为这里不相关.
在此先感谢您提供有关如何成功组合优先级和dependsOn来控制工作流的任何提示,但是仅在需要时使用依赖项.
这是另一个示例代码.
我不知道为什么它按此顺序运行:
输出:
10,20,30,40,等等… 110,//确定
130、140、150、160,//为什么跳过了120个优先级?
120、120、120等… 120 //最后运行?
同样有趣的是,这组120可以按顺序重新编号(121、122、123等),但它们最后运行.
因此,问题必须是“ dependsOn”和“ priority =”根本不能很好地配合使用.我很好奇是否有人在自己的环境中工作了这两个.谁知道这可能与Intellij IDEA有关?无论如何,我需要尽快深入了解此问题,以避免以后进行昂贵的重构!再次感谢您的任何反馈-JR
@Test(priority = 10, groups = "A")
public void login(){
System.out.println("10");
}
@Test(priority = 20, groups = {"A", "B"})
public void openUserAdministrationTest() {
System.out.println("20");
}
@Test(priority = 30, groups = {"A", "B"})
public void usersTabTest() {
System.out.println("30");
}
@Test(priority = 40, groups = {"A", "B"})
public void createUserTabTest() {
System.out.println("40");
}
@Test(priority = 50, groups = {"A", "B"})
public void userCreationDataEntryTest() {
System.out.println("50");
}
@Test(priority = 60, groups = {"A", "B", "C"})
public void userRolesTest() {
System.out.println("60");
}
@Test(priority = 70, groups = {"A", "B"})
public void saveUserTest() {
System.out.println("70");
}
@Test(priority = 80, groups = {"A", "B"})
public void closeUserAdminAndLogoutTest() {
System.out.println("80");
}
@Test(priority = 90, groups = "A")
public void loginNavigateToUserAdmin() {
System.out.println("90");
}
@Test(priority = 100, groups = {"A", "D"})
public void verifyUserSearchUserReturned() {
System.out.println("100");
}
@Test(priority = 110, groups = {"A", "D"})
public void reOpenNewUserTest() {
System.out.println("110");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserUserNameTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserFullNameTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserDepartmentTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserPhoneNumberTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserEmailTest() {
System.out.println("120");
}
// Note: password and active verified by user login
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserActiveCheckedTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserLanguageTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserDateFormatTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserNumberFormatTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserReportingPeriodTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserReportingPeriodExampleTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserReferencePeriodTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserReferencePeriodExampleTest() {
System.out.println("120");
}
@Test(priority = 120, groups = {"A", "E"}, dependsOnMethods = "reOpenNewUserTest")
public void verifyNewUserShowAnnotationsCheckedTest() {
System.out.println("120");
}
@Test(priority = 130, groups = {"A", "C"})
public void verifyNewUserRoleTest() {
System.out.println("130");
}
@Test(priority = 140, groups = {"A", "C"})
public void verifyNewUserFunctionalRoleTest() {
System.out.println("140");
}
@Test(priority = 150, groups = {"A", "C"})
public void verifyUserAdminCloseAndLogoutTest() {
System.out.println("150");
}
@Test(priority = 160, groups = {"A", "C"})
public void verifyUserLogin() {
System.out.println("160");
}
这是一个简单得多的示例,但也显示了如何依赖简单地打破优先级:
@Test(priority = 10)
public void test10(){
System.out.println("10");
}
@Test(priority = 20, dependsOnMethods = "test10")
public void test20() {
System.out.println("20, depends on 10");
}
@Test(priority = 30, dependsOnMethods = "test20")
public void test30() {
System.out.println("30, depends on 20");
}
@Test(priority = 40, dependsOnMethods = "test10")
public void test40() {
System.out.println("40, depends on 10");
}
应该运行:10、20、30、40.
运行:10、20、40、30.
解决方法:
不要提供优先级,而是依靠在一起,您可以将测试分组.你可以做到
例如,
@Test(priority = 10, groups = { "10" })
public void test10() {
System.out.println("10");
}
@Test(dependsOnMethods = "test10", groups = { "10" })
public void test20() {
System.out.println("20, depends on 10");
}
@Test(dependsOnGroups = { "10" })
public void test30() {
System.out.println("30, depends on 20");
}
@Test(dependsOnMethods = "test30")
public void test40() {
System.out.println("40, depends on 10");
}
必须运行的第二件事(成功或跳过其余部分)
即使其中一些方法失败了,您也将始终在所依赖的方法之后运行.当您只想确保测试方法以特定顺序运行但它们的成功并不真正取决于其他方法的成功时,这将非常有用.通过在@Test批注中添加“ alwaysRun = true”来获得软依赖性.
如果依赖的方法失败,并且您对其有严格的依赖关系(alwaysRun = false,这是默认设置),则依赖于该方法的方法不会标记为FAIL,而是会标记为SKIP.跳过的方法将在最终报告中报告(在HTML中既不是红色也不是绿色),这很重要,因为跳过的方法不一定会失败.
内容总结
以上是互联网集市为您收集整理的java-Selenium和TestNG同时使用’dependsOn’和’priority =’问题全部内容,希望文章能够帮你解决java-Selenium和TestNG同时使用’dependsOn’和’priority =’问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。