TestNG-提供用于类级别测试的参数

时间:2018-11-06 12:01:07

标签: java selenium 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的教程

错误说:[实用程序] [错误] [错误] org.testng.TestNGException: 参数'url'是方法addProjectTask上的@Test必需的,但尚未标记为@Optional或已定义 在C:\ Users \ SStaple \ AppData \ Local \ Temp \ testng-eclipse-38561327 \ testng-customsuite.xml

***我调用了我的参数网址。即:

@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>

有人知道正确的方法吗?

2 个答案:

答案 0 :(得分:0)

仅当类是从testng.xml运行时,才会选择这些参数。

答案 1 :(得分:0)

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

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