gpt4 book ai didi

java - 无法在 testng 套件中的 标签之间传递数据

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:19 25 4
gpt4 key购买 nike

我正在使用 TestNG xml 文件,就像在本文底部复制的文件一样。为了通过浏览器参数化测试,我将每个类分解为一个单独的节点。

作为与报告软件集成的一部分,我们将每个测试方法提供的一段数据存储在由 ITestContext 对象处理的数组列表中。在 @afterSuite 方法中,该对象将该信息上传到我们的报告软件

在其他套件中,类都存在于同一节点中,这可以正常工作。然而,在这个套件中,我们只获取最后一个节点的数据。它似乎通过使用每个 .ITestContext 创建一个新实例来覆盖前三个实例。不幸的是,我无法将这个套件合并为一个套件,因为我们将失去参数化测试的能力。

我需要知道是否有一种可接受的方式在不同节点中包含的测试方法之间传递信息。我尝试在公共(public)父级中使用静态变量(未成功),并且在 testNG 文档中找不到有关设置全局变量的任何内容。

<suite name="UL" parallel="tests" thread-count="1" verbose="10">
<parameter name="env" value="jobcaseStaging6"/>
<parameter name="recordTests" value="1"/>
<listeners>
</listeners>
<test name="UL Tests firefox">
<classes>
<class name="tests.selenium_tests.ULTests">
<parameter name="browser" value="firefox"/>
</class>
</classes>
</test>
<test name="UL Tests chrome">
<classes>
<class name="tests.selenium_tests.ULTests">
<parameter name="browser" value="chrome"/>
</class>
</classes>
</test>
<test name="UL Tests safari">
<classes>
<class name="tests.selenium_tests.ULTests">
<parameter name="browser" value="bs_safari"/>
</class>
</classes>
</test>
<test name="UL Tests edge">
<classes>
<class name="tests.selenium_tests.ULTests">
<parameter name="browser" value="bs_edge"/>
</class>
</classes>
</test>
</suite>

最佳答案

所以基本上这里有两种场景,对于每种场景,TestNG 都提供了共享数据的正确方法:

  1. 所有测试类(测试类是包含一个或多个 @Test 方法的类)都位于同一个 <test> 中。标记并希望在彼此之间共享数据。

在这种情况下,您应该使用 ITestContext通过ITestContext的属性来对象和共享数据对象。

  • 测试类位于一个或多个 <test>标记并希望在彼此之间共享数据。
  • 在这种情况下,您应该使用 ISuite通过ITestContext的属性来对象和共享数据对象。

    基本上:

    • ITestContext代表 <test>标签和
    • ISuite代表 <suite>标签

    关于java - 无法在 testng 套件中的 <test> 标签之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54226356/

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