我正在开发一个用于测试 UI 和 API 的混合框架。
我想在 QA 和 UAT 环境中执行相同的测试。我有 qa 和 uat 的 .properties 文件。以及一个将执行测试的 testng.xml 文件。我有特定于环境的 UI 和 API 测试。
我想定义一个通用环境变量,在执行 UI 或 API 测试之前,在 maven 执行期间传递(mvn 测试)将由 .properties 文件阅读器读取 - 我如何/在哪里可以定义这个环境变量?
我正在开发一个用于测试 UI 和 API 的混合框架。
我想在 QA 和 UAT 环境中执行相同的测试。我有 qa 和 uat 的 .properties 文件。以及一个将执行测试的 testng.xml 文件。我有特定于环境的 UI 和 API 测试。
我想定义一个通用环境变量,在执行 UI 或 API 测试之前,在 maven 执行期间传递(mvn 测试)将由 .properties 文件阅读器读取 - 我如何/在哪里可以定义这个环境变量?
<configuration>
<environmentVariables>
<environemnt>${environemnt}</environemnt>
<browser>${browser}</browser>
</environmentVariables>
</configuration>
在 pom.xml 文件的 maven-surefire-plugin 下添加上述配置后,即可在所需的环境和浏览器中执行所需的 testng.xml 文件。例如,
mvn test -Denvironment=qa -Dbrowser=firefox -DsuiteXmlFile=testng_ui.xml
通常当您创建一个框架时(假设从头开始;不推荐,因为有很多您可以直接选择然后根据您的需要进行定制)您应该负责读取属性文件。现在从等式中删除此细节,您可以将“通用环境变量”直接放入pom
文件中。这是一个解决方案:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<systemProperties>
<property>
<name>myUniversalProperty</name>
<value>Same in all envs</value>
</property>
</systemProperties>
</configuration>
</plugin>
现在这将允许您使用System.getProperty("myUniversalProperty")
表达式读取值。请注意,<value>
在这种情况下,也可以在运行应用程序时作为命令行参数传递。