TestNG-为类级测试提供参数



我正在使用TestNG、Java&Eclipse工作空间。我可以通过多种方式运行测试。我可以运行一个TestNG文件,也可以运行单独的类。如果我从一个单独的类运行,则参数不会从TestNG.xml文件中获取。我可能想将测试切换到另一个URL。教程中给出的这种形式不起作用,&只会产生错误。

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterizedTest1 {
@Test
@Parameters("myName")
public void parameterTest(String myName) {
System.out.println("Parameterized value is : " + myName);
}
}

这是来自https://www.tutorialspoint.com/testng/testng_parameterized_test.htm

错误显示:[Utils][Error][Error]org.testng.TestNGException:参数'url'是方法addProjectTask上的@Test所必需的,但尚未标记为@Optional或定义在C:\Users\SStaple\AppData\Local\Temp\testng-eclipse-38561327\testng-customsuite.xml 中

***我调用了我的参数url。即:

@Test(groups = { "all", "projects", "create", "simple" })
@Parameters("url")
public void addProjectTask(String url) {
System.out.println("Parameterized value is : " + url);

我不想每次切换URL时都要重新编码。

Testng.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite allow-return-values="false" configfailurepolicy="skip"
data-provider-thread-count="10" group-by-instances="false" guice-stage="DEVELOPMENT"
junit="false" name="hardening-simple" parallel="none" preserve-order="true"
skipfailedinvocationcounts="false" thread-count="5">
<parameter name="browser" value="firefox" />
<parameter name="url" value="https://url/#/" />
<parameter name="printToFile" value="true" />
<parameter name="trace" value="false" />
<parameter name="opt" value="true" />
<parameter name="customer" value="Demo" />
<parameter name="network" value="NSG Designated Streets (Type 1/2)" />
<parameter name="buildNo" value="025" />
<parameter name="teamCity" value="false" />
<parameter name="retest" value="0" />
<parameter name="user" value="normal" />
<listeners>
<listener class-name="listeners.TestNGCustomReportListener" />
</listeners>
<test allow-return-values="false" group-by-instances="false"
junit="false" name="firefoxTest" preserve-order="true"
skipfailedinvocationcounts="false">
<parameter name="browser" value="firefox" />
<parameter name="url" value="https://url/#/" />
<parameter name="opt" value="true" />
<parameter name="user" value="normal" />
<groups>
<define name="simple">
<include name="simple" />
</define>
<run>
<include name="simple" />
<exclude name="not-implemented" />
</run>
</groups>
<classes>

有人知道正确的方法吗?

只有当类从testng.xml运行时,才会拾取这些参数。

使用参数不是最佳解决方案。从属性文件中驱动您的值,这样您就可以维护所有数据。您可以在代码中创建变量,并使用属性文件中的值。您可以在不更改代码的情况下更改属性文件中的数据,但使用更易于管理的方式。如果有多个数据集,那么您可以使用多个属性文件,只需提供文件的地址。

特性文件教程:https://www.youtube.com/watch?v=bljA8dpfWeQ

最新更新