下面的testng.xml
文件具有三个参数。我不希望对customerCode
参数进行硬编码。我想将变化/不同的customerCode
传递给以下testng.xml
文件,但是我也想让Peter作为默认的customerCode
,以防万一我不通过mvn
命令行提供以下内容:
mvn test -DcustomerCode=customer1 -Ptestng.xml
以下是
testng.xml
文件:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestSuite" parallel="false">
<test name="someTest">
<parameter name="browserType" value="chrome_win"></parameter>
<parameter name="Url" value="http://regression.mytest.com/?customerCode=" />
<parameter name="customerCode" value="Peter"/>
<groups>
<run>
<exclude name="navigateToHomePage" />
</run>
</groups>
<classes>
<class name="com.automation.customermanagement.createTest.myIntegrationTest" >
<methods>
<exclude name="deleteCustomer" />
</methods>
</class>
</classes>
</test>
</suite>
我该如何实现?有没有办法做到这一点?
以下是我的POM文件。我在配置文件中的哪里放置
customerCode
属性?<profile>
<id>AddMgmtTest</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>admgmttestng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
最佳答案
这是我实施的解决方案,它工作正常!
1)将以下属性添加到POM.xml
文件
<systemProperties>
<property>
<name>customerCode</name>
<value>Subaru</value>
</property>
</systemProperties>
2)将此行添加到测试方法
String customerCode= System.getProperty("customerCode");
3)在上面的行中拉出以下mvn命令行中提供的
customerCode=customer1
mvn test -DcustomerCode = customer1 -Ptestng.xml
如果您未在命令行中提供
customerCode
,它将采用Subaru
文件中上述属性中提供的POM.xml
的默认值。