是否可以将属性文件值作为参数值传递给testng.xml?

时间:2016-07-28 10:55:35

标签: maven testng

是否可以将属性文件值作为参数值传递给testng.xml

示例:

test.properties:

browser = FIREFOX

的testng.xml:

parameter name = "browser" value = "${test.browser}"

2 个答案:

答案 0 :(得分:2)

是的,这可以通过filtering testng.xml测试资源来实现。

在您的POM中,您需要声明与您的属性文件相关的过滤器,并覆盖<testResources>以过滤testng.xml资源。

<build>
  <filters>
    <filter>path/to/test.properties</filter> <!-- relative to location of POM -->
  </filters>
  <testResources>
    <testResource>
      <directory>src/test/resources</directory>
      <includes>
        <include>testng.xml</include>
      </includes>
      <filtering>true</filtering>
    </testResource>
    <testResource>
      <directory>src/test/resources</directory>
      <excludes>
        <exclude>testng.xml</exclude>
      </excludes>
    </testResource>
  </testResources>
  <!-- rest of build section -->
</build>

如果您的属性文件包含密钥test.browser,则会正确地用该密钥的值替换plaholder ${test.browser}。所有这些都将在测试启动之前发生,因此TestNG将看到已替换值的过滤文件。

请注意,上述配置仅过滤testng.xml以避免过滤过多。您可以扩展它以过滤多个文件。

答案 1 :(得分:1)

不可能开箱即用,但你应该能够使用IAlterSuiteListener,你可以根据需要替换值。