是否可以将属性文件值作为参数值传递给testng.xml
?
示例:
test.properties:
browser = FIREFOX
的testng.xml:
parameter name = "browser" value = "${test.browser}"
答案 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
,你可以根据需要替换值。