我正在使用Maven Failsafe + TestNG来运行Selenium测试。我知道可以通过在pom.xml中定义系统属性来将参数传递给TestNG测试,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<systemPropertyVariables>
<browser>firefox</browser>
</systemPropertyVariables>
</configuration>
</plugin>
我的TestNG测试引用此属性,如下所示:
@Parameters("browser")
public void setUpClass(@Optional("firefox") String browser)
{
...
}
然而,我想知道是否有可能在不需要指定testng.xml文件的情况下并行运行跨浏览器测试。我曾尝试过类似的方法,但没有成功。如果您能提供帮助,我将不胜感激。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<systemPropertyVariables>
<browser>firefox, chrome</browser>
</systemPropertyVariables>
<parallel>tests</parallel>
</configuration>
</plugin>
仅仅通过pom.xml配置就可以实现这一点吗?由于我的项目具有多模块的特性,我不喜欢使用testng.xml文件。
3条答案
按热度按时间jv4diomz1#
您可以在 *.properties文件中填充所有属性,然后将其与Properties Maven Plugin一起使用QATools Properties将使它们在驱动程序配置过程中易于使用
tzxcd3kk2#
你也可以用编程的方式运行任何TestNG测试。在这里检查TestNG以编程的方式运行,所以从maven你只需要用main方法调用你的类就可以用编程的方式运行testng,并且从任何源代码(csv,properties,xml,xlsx.,等等)读取你想要的任何属性。
rggaifut3#
这是一个简单的变通办法,以实现同样的目标。我正在做的,它帮助我保持一个干净的代码,而不是添加到许多变化和所有。
这是基于您使用Jenkins来触发测试的假设。
您可以在Jenkins服务器上创建2个Jenkins作业。然后使用不同的mvn命令执行它们。
如
mvn clean test -Dbrowser=firefox
和mvn clean test -Dbrowser=chrome
希望这对你有帮助。