gpt4 book ai didi

testng - 为什么我的 @BeforeTest 方法有时会报告为先前测试的最后一个元素?

转载 作者:行者123 更新时间:2023-12-02 09:58:05 25 4
gpt4 key购买 nike

我有一个 testNG 套件,正在执行一些 selenium 代码。我正在测试我拥有的网络应用程序中页面之间的导航。有四种不同的用户级别,根据用户类型提供对受限页面的访问权限。我还需要在 Chrome 和 IE 中对此进行测试。

我关注了Mkyong.com tutorial用于我的 testng.xml 设置。

我选择在一个 testng.xml 中收集所有用户和两个浏览器的所有导航测试。它总共提供了 8 个测试类,其中 4 和 4 在测试运行之前执行了相同的配置类。

testng.xml:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Releaseboard Local tests" parallel="none">


<test name="user1 chrome">
<classes>
<class name="testsuite.ChromeConfig" />
<class name="testcase.User1NavigationTests" />
</classes>
</test>
<test name="user2 chrome">
<classes>
<class name="testsuite.ChromeConfig" />
<class name="testcase.User2NavigationTests" />
</classes>
</test>
<test name="user3 chrome">
<classes>
<class name="testsuite.ChromeConfig" />
<class name="testcase.User3NavigationTests" />
</classes>
</test>
<test name="user4 chrome">
<classes>
<class name="testsuite.ChromeConfig" />
<class name="testcase.User4NavigationTests" />
</classes>
</test>


<test name="user1 ie">
<classes>
<class name="testsuite.IeConfig" />
<class name="testcase.User1NavigationTests" />
</classes>
</test>
<test name="user2 ie">
<classes>
<class name="testsuite.IeConfig" />
<class name="testcase.User2NavigationTests" />
</classes>
</test>
<test name="user3 ie">
<classes>
<class name="testsuite.IeConfig" />
<class name="testcase.User3NavigationTests" />
</classes>
</test>
<test name="user4 ie">
<classes>
<class name="testsuite.IeConfig" />
<class name="testcase.User4NavigationTests" />
</classes>
</test>
</suite>

现在,当我运行这些测试时,我期望所有 8 个测试类都有此输出:

enter image description here

它们是红色还是绿色并不重要,但我希望 xml 中的所有测试标签都向上两个级别启动,并且始终处于同一级别。在所示的三个级别之上还有一个级别,但此时并不重要。

然而,我得到的输出是,有时下一个级别 2 会出现在前一个级别 1 内。然后它会导致 @BeforeTest 带注释的方法失败。这本身并没有那么糟糕,因为它实际上还在上一个测试失败后以级别 1 运行测试。但是,如果测试已出现在前一个测试中,则它在级别 1 处也总是会失败@BeforeTest,并且所有级别 3 测试方法都会自动跳过。见下图:

enter image description here

所有末尾带有时间的行都是屏幕截图中的实际行。其余部分已进行匿名编辑。

请注意,我的 @BeforeTest 和 @AfterTest 方法、setup 和tearDown 现在由于某种原因被列为测试。既是里面错误的测试,没有任何真实的测试方法,又是里面的下一个,突然有了实际的测试方法。这些错误每次都是完全随机出现的。不存在总是包含下一个测试的特定测试。有时是三个,有时只有一个。唯一一致的是,它永远不会连续两次。我真的不明白这是怎么回事。我很想更好地解释,或者做更多的研究,但我很难将这个问题归结为可搜索的术语。我有一种感觉,在我悬赏之前,这个问题可能不会得到答复。

我将发布任何人都可以想到想要查看的任何其他代码示例,但现在我不知道从哪里开始。

最佳答案

这似乎是我问题的答案,这就是 @BeforeTest 注解方法失败时发生的情况。换句话说,事实上,设置和拆卸显示在之前的测试层次结构中,可能只是 testNG 方面的小报告错误。这不是任何错误的原因。在我的例子中,错误的原因和跳过的测试是不稳定的设置方法的结果。事实上,它有时有效,有时无效,是由于我的页面上敏感的小条件元素,这些元素有时会及时找到/加载,有时则不会。

关于testng - 为什么我的 @BeforeTest 方法有时会报告为先前测试的最后一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47578462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com