Selenium webdriver 使用testng.xml运行测试用例时,获取错误取决于不存在的组
以TestNG的形式运行带有dependsOnGroupsis属性的类时工作正常,但使用TestNG.xml文件运行时出错 我不知道为什么会出现这样的错误,可能是因为需要在testing.xml文件中添加一些依赖项,而我可能缺少这些依赖项。任何人的帮助都会得到更多的感激。提前谢谢Selenium webdriver 使用testng.xml运行测试用例时,获取错误取决于不存在的组,selenium-webdriver,testng,Selenium Webdriver,Testng,以TestNG的形式运行带有dependsOnGroupsis属性的类时工作正常,但使用TestNG.xml文件运行时出错 我不知道为什么会出现这样的错误,可能是因为需要在testing.xml文件中添加一些依赖项,而我可能缺少这些依赖项。任何人的帮助都会得到更多的感激。提前谢谢 [TestNG] Running: C:\Workspace\ZionsWorkspace\Zions_Bancs_Automation\testng.xml org.testng.TestNGExce
[TestNG] Running:
C:\Workspace\ZionsWorkspace\Zions_Bancs_Automation\testng.xml
org.testng.TestNGException:
DependencyMap::Method "LoanApprovalTest.testLoanApprova(java.util.Hashtable)[pri:0, instance:com.zions.release1.Sanity.LoanTestCases.LoanApprovalTest@3884b2]" depends on nonexistent group "CreateLoanAccountTest.testCreateLoanAccount"
at org.testng.DependencyMap.getMethodsThatBelongTo(DependencyMap.java:46)
at org.testng.TestRunner.createDynamicGraph(TestRunner.java:1074)
at org.testng.TestRunner.privateRun(TestRunner.java:734)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
at org.testng.TestNG.run(TestNG.java:1057)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)
第1类:
public class CreateLoanAccountTest extends AbstractBaseTestCase{
private CreateLoanAccountProcess createLoanAccountProcess = null;
@Test(dataProvider="createLoanAccountTest" , dataProviderClass = DataProviderForSanitTest.class , groups={"CreateLoanAccountTest.testCreateLoanAccount"})
public void testCreateLoanAccount(Hashtable<String, String> TestDataTable){
}
}
公共类createLoanaCountTest扩展了AbstractBaseTestCase{
私有CreateLoanaCountProcess CreateLoanaCountProcess=null;
@测试(dataProvider=“CreateLoanaCountTest”,dataProviderClass=DataProviderForSanitTest.class,groups={“CreateLoanaCountTest.TestCreateLoanaCount”})
公共void testCreateLoanAccount(哈希表TestDataTable){
}
}
第2类:
public class LoanApprovalTest extends AbstractBaseTestCase {
@Test(dataProvider="loanApprovalTest" , dataProviderClass = DataProviderForSanitTest.class , dependsOnGroups={"CreateLoanAccountTest.testCreateLoanAccount"})
public void testLoanApprova(Hashtable<String, String> TestDataTable){
}
}
公共类LoanApprovalTest扩展了AbstractBaseTestCase{
@测试(dataProvider=“loanaprovaltest”,dataProviderClass=DataProviderForSanitTest.class,dependsOnGroups={“CreateLoanAccountTest.testCreateLoanAccount”})
公共void testLoanApprova(哈希表TestDataTable){
}
}
Testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- parallel="methods" To Execute the classess Parallel -->
<suite name="Suite" >
<test name="Test">
<class name="com.zions.release1.Sanity.LoanTestCases.LoanApprovalTest"/>
<class name="com.zions.release1.Sanity.LoanTestCases.AmendLoanAccountTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
虽然我在testing.xml文件中包含depend-on类,但它开始工作,但它们的运行顺序并不是预期的 贷款审批取决于贷款创建,贷款修改是独立的测试用例 执行命令为: 创建贷款账户, 贷款修订, 日志批准 这是预料之中的事 贷款创造, 贷款审批, 贷款修订 我不明白为什么会这样。在测试文件中保留具有dependsongroups属性的类时,任何人都可以解释执行顺序
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- parallel="methods" To Execute the classess Parallel -->
<suite name="Suite" >
<test name="Test">
<classes>
<class name="com.zions.release1.Sanity.LoanTestCases.CreateLoanAccountTest"/>
<class name="com.zions.release1.Sanity.LoanTestCases.LoanApprovalTest"/>
<class name="com.zions.release1.Sanity.LoanTestCases.AmendLoanAccountTest" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
如果您只担心执行顺序,则必须进行两项更改: 1.在testng.xml文件中,您必须添加:
test name="Test" **preserve-order="true"**
这将确保testng.xml文件中提到的测试类的执行顺序。请点击此链接了解更多详细信息
优先级
鼓励执行顺序,但不保证前一优先级已完成。test3可以在test2完成之前启动。如果需要保证,则声明依赖项
与声明依赖关系的解决方案不同,使用优先级的测试即使一个测试失败也会执行。依赖关系的这个问题可以通过@Test(…alwaysRun=true…)解决,根据顺序是另一个问题。在任何情况下,您都应该简化示例,因为很难理解。嗨,Anshul,我在testng文件中尝试使用preserve order=true,但其行为方式相同,具有groups属性的类在最后执行,即使它位于create account和amendment of loan account之间。谢谢你的回复,这是一个信息量大的问题。我通过将单独的类作为方法保留在同一个类中并使用dependsonmethod来解决此问题,然后order按预期工作。现在我遇到的另一个问题是使用多个数据集运行测试用例,就像我有一个用于创建帐户的类,但有两个数据集,因此,在显示CALS的区段报告中,使用相同的名称执行了两次,现在要更改每次执行的名称,我想从excel中传递Testcase名称,并想通过before方法传递该值。我正在初始化扩展数据块报告的位置。但是现在找到了将testcase名称作为变量从方法传递到before方法的任何方法:(我想了所有可能的方法,但没有成功,请告诉我您是否知道解决方案