当前位置: 首页 > 知识库问答 >
问题:

TestNG-不能在一个套件中运行两次相同的测试

储峻
2023-03-14

我有一个 TestNG 测试套件运行良好,除了一件事:我不能两次运行相同的测试。我想运行两次测试的原因是,我正在测试将用户登录/注销的 Web 服务,并且我想验证登录是否有效,然后注销是否有效,然后再次登录它们,以便后续测试(需要用户登录)可以继续。

下面是我的testng.xml的相关部分:

<suite name="WebServiceTestSuite">
    <test name="webServiceTest" verbose="10" parallel="none">
        <classes>
            <class name="com.abcco.webservice.DivisionTest">
                <methods>
                    <include name="registrationCreateTest"></include>
                    <include name="registrationActivateTest"></include>
                    <include name="appUserLoginTest"></include>
                    <include name="appUserLogoutTest"></include>
                    <include name="appUserLoginTest"></include>
                    <include name="sessionValidateTest"></include>
                    <include name="sessionExtendTest"></include>
                </methods>
            </class>
        </classes>
    </test>
</suite>

如您所见,“appUserLogintest”被调用了两次。但是,当我调试它时,我可以清楚地看到它只在第一次被调用时实际运行。之后,执行继续进行,就好像调用它的第二行不存在一样。

共有2个答案

韩弘方
2023-03-14

解决TestNG测试中的代码重复问题我只能找到这个解决方案:

创建一个根套件.xml文件,如下所示:

<suite name="Description">
<suite-files>
    <suite-file path="../../Actions/Test1.xml"/>
    <suite-file path="../../Actions/Test2.xml"/>
    <suite-file path="Actions/Test3.xml"/>
    <suite-file path="../../Common/Close Browser.xml"/>
</suite-files>

<suite-files>
    <suite-file path="../../Actions/Test1.xml"/>
    <suite-file path="../../Actions/Test2.xml"/>
    <suite-file path="Actions/Test4.xml"/>
    <suite-file path="../../Common/Close Browser.xml"/>
</suite-files>
</suite>

重要的您不能在Test1.xml、Test2.xml、Test3.xml、Test4.xml中包含重复的套件文件-所有重复的套件都将被忽略。

请注意,TestNG的版本必须至少为6.9.9

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.9.9</version>
  <scope>test</scope>
</dependency> 
谢翰学
2023-03-14

这实际上是TestNG中的设计。我认为有两种可能的选择:

首先,查看如何将 DataProvider 与测试配合使用,以便可以使用不同的参数重复执行它们。

或者,更改XML布局,使每个方法都是其自己标记的一部分。在此配置中,XML将更长,但您可以作为套件的一部分多次调用测试方法。

编辑:现在更多细节。

作为对您的评论的回应,这里有一个示例XML布局,当我遇到同样的问题时,它对我有用。试试这个:

<suite name="WebServiceTestSuite">
<test name="webServiceTest">
    <classes>
        <class name="com.abcco.webservice.DivisionTest">
            <methods>
                <include name="registrationCreateTest"></include>
            </methods>
        </class>
    </classes>
</test>
<test name="webServiceTest">
    <classes>
        <class name="com.abcco.webservice.DivisionTest">
            <methods>
                <include name="registrationActivateTest"></include>
            </methods>
        </class>
    </classes>
</test>
<test name="webServiceTest">
    <classes>
        <class name="com.abcco.webservice.DivisionTest">
            <methods>
                <include name="appUserLoginTest"></include>
            </methods>
        </class>
    </classes>
</test>
<test name="webServiceTest">
    <classes>
        <class name="com.abcco.webservice.DivisionTest">
            <methods>
                <include name="appUserLogoutTest"></include>
            </methods>
        </class>
    </classes>
</test>
<test name="webServiceTest">
    <classes>
        <class name="com.abcco.webservice.DivisionTest">
            <methods>
                <include name="appUserLoginTest"></include>
            </methods>
        </class>
    </classes>
</test>
<test name="webServiceTest">
    <classes>
        <class name="com.abcco.webservice.DivisionTest">
            <methods>
                <include name="sessionValidateTest"></include>
            </methods>
        </class>
    </classes>
</test>
<test name="webServiceTest">
    <classes>
        <class name="com.abcco.webservice.DivisionTest">
            <methods>
                <include name="sessionExtendTest"></include>
            </methods>
        </class>
    </classes>
</test>
</suite>

我从< code >中删除了< code > verbose = " 10 " parallel = " none "

你会发现这是一个更冗长的XML布局,但它当时为我解决了同样的问题。您还可以考虑稍微重新排列代码,并创建一个@Test方法,将 XML 上的所有方法作为单个测试调用,从而减少 XML 文件的长度。

 类似资料:
  • 我有一个Selenium-Java-TestNG-Maven套件。我正在通过pom XML运行这个。但是maven在testng xml中运行了两次测试。但是,当我运行与TestNG套件相同的TestNG xml时,它的行为是正常的,也就是说,它只像预期的那样运行一次TestNG xml中的测试。 `http://maven.apache.org/xsd/maven-4.0.0.xsd“>4.0.

  • 我试图使用XML和TestNG运行一个测试套件,但是我总是同时使用Eclipse和命令行得到相同的消息: 该文件已正确读取,但测试似乎没有运行。 以下是我的testng.xml的内容: 这是我的目录结构在Eclipse中的样子: 此外,这也是我试图通过命令行运行测试套件的方式: 我尝试过通过eclipse清理项目,但似乎没有帮助。我也试过跑步: < code>mvn clean,但它也没有完成工作

  • 考虑一个场景,我在测试一个索赔系统。我想提交报价并检查账单总额。一天两次或两次以上的索赔应该能为我赢得奖金。所以我需要在1次索赔后检查总金额,在2次索赔后再次检查,然后在删除一次索赔后再次检查,依此类推。执行如下- 登录 增加1项索赔 计算应收总额 增加1个索赔 计算应收总额 删除索赔 计算应收总额 注销 我的TestNG. xml看起来像这样- 如前所述,需要在同一测试中多次调用函数“fChec

  • 例如: 数据提供程序1:dataA 数据提供程序2:dataB,dataC 数据提供程序3:dataD、dataE、dataG 所以我的测试需要一个数据提供者。但是我希望它根据测试组为不同的测试类型选择不同的数据提供者。例如,如果我正在运行“smoke”组,那么我希望使用数据提供者1;如果我正在运行“sanity”组,那么我希望运行数据提供者1和数据提供者2;如果我正在运行“regression”

  • 线程“main”org.testng.testngexception:两个套件不能具有相同的名称:在org.testng.testng.checksuitenamesinternal(testng.java:1019)在org.testng.testng.checksuitenames(testng.java:1012)在org.testng.testng.sanitycheck(testng.j