Selenium webdriver 使用testng.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的形式运行带有dependsOnGroupsis属性的类时工作正常,但使用TestNG.xml文件运行时出错

我不知道为什么会出现这样的错误,可能是因为需要在testing.xml文件中添加一些依赖项,而我可能缺少这些依赖项。任何人的帮助都会得到更多的感激。提前谢谢

 [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文件中提到的测试类的执行顺序。请点击此链接了解更多详细信息

  • 如果要确保类内的优先级顺序,必须执行以下操作:
  • @测试(优先级=1) public void Test1(){}

    @测试(优先级=2) public void Test2(){}

    @测试(优先级=3) public void Test3(){}

    优先级
    鼓励执行顺序,但不保证前一优先级已完成。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方法的任何方法:(我想了所有可能的方法,但没有成功,请告诉我您是否知道解决方案