从 testNG.xml 文件中检索参数值

2022-01-10 00:00:00 xml xml-parsing java testng

我想从键 parameter name ="webdriver.deviceName.iPhone" 打印值 "iPhone5" .

I want to print the value "iPhone5" from the key parameter name ="webdriver.deviceName.iPhone" .

推荐答案

基本上有两种方法可以在测试类中执行此操作(测试类本质上是一个包含一个或多个 @Test 的类/配置方法)

There are basically two ways in which you do this from within a Test Class (A test class is essentially a class that houses one or more @Test/configuration methods)

  1. 通过 ITestContext 对象.您可以通过调用 Reporter.getCurrentTestResult().getTestContext()
  2. 来访问当前方法的 ITestResult 对象
  3. 使用原生注入,其中您有 TestNG 注入 ITestContext 对象.有关本地注入的更多详细信息,请参阅 TestNG 文档此处
  1. Via the ITestContext object. You can get access to the current method's ITestResult object by calling Reporter.getCurrentTestResult().getTestContext()
  2. Using Native injection wherein you have TestNG inject a ITestContext object. For more details on native injection please refer to the TestNG documentation here

这里有一个示例,展示了这两种情况.

Here's a sample that shows both these in action.

import org.testng.ITestContext;
import org.testng.Reporter;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class SampleTestClass {

  private static final String KEY = "webdriver.deviceName.iPhone";

  @BeforeClass
  public void beforeClass(ITestContext context) {
    String value = context.getCurrentXmlTest().getParameter(KEY);
    System.err.println("webdriver.deviceName.iPhone = " + value);
  }

  @Test
  public void testMethod() {
    String value = Reporter.getCurrentTestResult().getTestContext().getCurrentXmlTest().getParameter(KEY);
    System.err.println("webdriver.deviceName.iPhone = " + value);
  }
}

相关文章