在 testng XML 中添加系统 属性?
Adding system property in testng XML?
我们正在尝试直接在 testng xml 文件中添加一个系统 属性,因为我们希望在 Jenkins 作业中自动 运行 不同的测试套件,而不需要不同的 xml 每个测试集的文件。有没有办法将系统 属性 直接传递给文件并解析它?
例如,我们目前有:
<test name="Regression">
<groups>
<run>
<include name="Test" />
</run>
</groups>
并希望能够拥有:
<test name="Regression">
<groups>
<run>
<include name=$TestParameter />
</run>
</groups>
非常感谢!
在 TestNG 中没有解释器可以将您的 'variable' 转换为系统属性的值。您必须自己添加该功能。看看http://testng.org/doc/documentation-main.html#running-testng-programmatically。
这是符合您的建议的示例:
XmlSuite suite = new XmlSuite();
suite.setName("TmpSuite");
XmlTest test = new XmlTest(suite);
test.setName("TmpTest");
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass(System.getProperty("TestParameter")));
test.setXmlClasses(classes) ;
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();
当然还有其他方法可以做到这一点。一种更简单的方法可能是 运行 一个预测试脚本,它在测试开始之前简单地替换 XML 文件中的内容。使用 groovy 脚本执行此操作,例如:
def file = new File('relativepath/file')
def xml = file.text
//println xml
file.text = xml.replace('$TestParameter',System.getProperty('TestParameter'))
记住不要在定义 $TestParameter 时使用 ",因为 groovy 会将其解释为尝试使用具有该名称的局部变量。
我们正在尝试直接在 testng xml 文件中添加一个系统 属性,因为我们希望在 Jenkins 作业中自动 运行 不同的测试套件,而不需要不同的 xml 每个测试集的文件。有没有办法将系统 属性 直接传递给文件并解析它?
例如,我们目前有:
<test name="Regression">
<groups>
<run>
<include name="Test" />
</run>
</groups>
并希望能够拥有:
<test name="Regression">
<groups>
<run>
<include name=$TestParameter />
</run>
</groups>
非常感谢!
在 TestNG 中没有解释器可以将您的 'variable' 转换为系统属性的值。您必须自己添加该功能。看看http://testng.org/doc/documentation-main.html#running-testng-programmatically。 这是符合您的建议的示例:
XmlSuite suite = new XmlSuite();
suite.setName("TmpSuite");
XmlTest test = new XmlTest(suite);
test.setName("TmpTest");
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass(System.getProperty("TestParameter")));
test.setXmlClasses(classes) ;
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();
当然还有其他方法可以做到这一点。一种更简单的方法可能是 运行 一个预测试脚本,它在测试开始之前简单地替换 XML 文件中的内容。使用 groovy 脚本执行此操作,例如:
def file = new File('relativepath/file')
def xml = file.text
//println xml
file.text = xml.replace('$TestParameter',System.getProperty('TestParameter'))
记住不要在定义 $TestParameter 时使用 ",因为 groovy 会将其解释为尝试使用具有该名称的局部变量。