问题描述
我正在开发一种用于测试UI和API的混合框架。
我想在QA和UAT环境中执行相同的测试。我有用于qa和uat的.properties文件。还有一个将执行测试的testng.xml文件。 我有特定于环境的UI和API测试。
我想定义一个通用环境变量,该变量在执行maven执行(mvn测试)时将通过.properties文件读取器读取,然后再执行UI或API测试-如何/在何处定义此环境变量?>
解决方法
<configuration>
<environmentVariables>
<environemnt>${environemnt}</environemnt>
<browser>${browser}</browser>
</environmentVariables>
</configuration>
在pom.xml文件中的maven-surefire-plugin下添加以上配置后,可以在所需的环境和浏览器中执行所需的testng.xml文件。 例如,
,mvn测试-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>
也可以在运行应用程序时作为命令行参数传递。