【问题标题】:Pass values between TestNG tests在 TestNG 测试之间传递值
【发布时间】:2016-05-30 17:41:50
【问题描述】:

背景:我正在使用 TestNG 执行测试,并且我有一个用 @Test 注释的类,它会生成一个数字或 ID,如果你愿意的话,这个数字是我第二个测试的输入值。是否可以在 TestNG 测试之间传递值?

【问题讨论】:

  • 测试应该是独立的,所以这对我来说似乎是不好的做法。如果您发布您的代码,它会更容易提供帮助。
  • 测试用例是端到端的,所以我想追踪我在第一个测试用例中创建的用例编号一直到结束。
  • 您必须自己进行处理 - 创建一个用于跨测试的变量。如果您正在并行运行,请确保通过使用 threadlocal 将变量放入来处理此问题。

标签: java testing testng


【解决方案1】:

您应该创建一个处理整个案例的测试。测试不能相互依赖,这被认为是不好的做法。如果您使用的是 maven,则不同环境中的测试执行顺序可能会有所不同。

【讨论】:

    【解决方案2】:

    无论是不是坏习惯,都可以通过简单地使用类字段来完成。只需确保您的案例以可预测的顺序执行(例如,使用 @Test(priority) 或 dependsOn TestNG 功能)。

    【讨论】:

      【解决方案3】:

      当然。例如,如果您有两个相关的测试,您可以通过测试上下文属性将值从一个测试传递到另一个:

      @Test
      public void test1(ITestContext context) { //Will be injected by testNG
          /* Do the test here */
          context.setAttribute("myOwnAttribute", "someTestResult");
      }
      
      @Test(dependsOnMethods = "test1")
      public void test2(ITestContext context) { //Will be injected by testNG
          String prevResult = (String) context.getAttribute("myOwnAttribute");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-15
        相关资源
        最近更新 更多