所有测试数据都是字符串。
我可以看到如何在jenkins中创建一个参数化的项目,并可以在项目中创建字符串参数。 我不清楚在运行时传递数据的最佳方法。我知道可以使用一个蚂蚁脚本,但是我已经使用了Maven,并且不想引入另一种冲突的技术。
我已经听说这可以使用testng.xml中的beanshell脚本完成,但是从
-Testngdocs上的示例中,我仍然不清楚如何最好地实现它。
在这里您可以解决这个问题。
添加您要通过jenkins传递的所有参数进入套件XML文件并为其定义一些默认值。
在詹金斯(Jenkins)作业中,您现在创建参数,但请确保您的作业配置中的参数名称与您在Suite XML文件中添加的名称匹配。 然后,您使用testng侦听器,如下所示,然后使用其中一种详细介绍的方法将其连接到我的博客文章中。 级别,则可以增强我在下面显示的侦听器,并在实现public class EnvReaderListener implements ISuiteListener {
@Override
public void onStart(ISuite suite) {
Map<String, String> parameters = suite.getXmlSuite().getParameters();
for (Map.Entry<String, String> parameter : parameters.entrySet()) {
String env = System.getenv(parameter.getKey());
if (env != null && ! env.trim().isEmpty()) {
parameter.setValue(env);
}
}
}
@Override
public void onFinish(ISuite suite) {
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="My Suite" parallel="methods" verbose="2">
<listeners>
<listener class-name="org.rationale.emotions.EnvReaderListener"/>
</listeners>
<parameter name="name" value="Sample name"/>
<test name="My Test" verbose="2">
<classes>
<class name="org.rationale.emotions.SampleTest"/>
</classes>
</test>
</suite>
name
的参数。
样本测试类package org.rationale.emotions;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class SampleTest {
@Test
@Parameters ("name")
public void testMethod(String name) {
System.err.println("Name that was passed in via Jenkins job " + name);
}
}
您可能会在项目中使用启用MAVEN Resources插件目标
copy-resources
启用了模板文件中的变量。
示例:
filters
在您的情况下与詹金斯一起使用此案件:
改变您的testng.xml->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>path_to_output_folder/output</outputDirectory>
<resources>
<resource>
<directory>path_to_resource_dir/res</directory> <!--source to your testng.xml-->
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
call maven目标
<parameter name="firstName" value="${firstname}"/>
其中($ firstName)是jenkins变量。