当前位置: 首页 > 知识库问答 >
问题:

TestNG-为类级测试提供参数

裴俊能
2023-03-14

我正在使用TestNG和Java运行测试

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][错误]org.testng.TestNGExc0019:@Test on method addProjectWork需要参数'url',但未在C:\用户\SStaple\AppData\本地\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>

有人知道正确的方法吗?

共有2个答案

申思远
2023-03-14

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

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

廉鸿运
2023-03-14

只有从testng运行该类时,才会获取这些参数。xml。

 类似资料:
  • 我有以下问题 我有一个带有随机名称的测试,我必须记录我从数据提供者提供的两个测试参数。 我实现了一种方法,通过将它们连接到名称中,将它们记录为自定义处理的测试参数。 然而,TestNG还添加了未处理的参数(它们看起来像是随机生成的代码,带有包/类的名称和其他内容,如下图所示)。 是否有任何方法可以删除TestNG记录的数据提供程序测试参数?或者我可以用自定义数据提供程序测试参数覆盖它们吗? 顺便说

  • 主要内容:1. 使用XML传递参数,2. 通过@DataProvider传递参数,3. @DataProvider + 方法,4. @DataProvider + ITestContextTestNG中的另一个有趣的功能是参数化测试。 在大多数情况下,您会遇到业务逻辑需要大量测试的场景。 参数化测试允许开发人员使用不同的值一次又一次地运行相同的测试。 TestNG可以通过两种不同的方式将参数直接传递给测试方法: 使用 使用数据提供者 在本教程中,我们将向您展示如何通过XML 或将参数传递给方法。

  • 我使用了test dat provider和factory来处理示例数据,更像是从具有多个值的excel行中读取数据。因此,每个映射表示每行的列名和值,并将其添加到列表中,以获得从excel读取的所有值。现在我返回

  • 我有一个TestNG Dataprovider测试,如下所示: 输入csv 读者 测验 有许多输入文件,每个测试都包含一个优先级。我想单独运行优先级为1的测试。 在没有数据提供者的情况下,我可以使用下面的IMethodInterceptor过滤测试。 样品测试: 由于数据提供者的优先级是动态的,因此我无法根据优先级过滤测试。 不应执行其他测试,而应跳过其他测试。

  • 主要内容:1. CharUtil类,2. TestNG @DataProvider示例另一个TestNG参数测试示例,是使用注解。 1. CharUtil类 创建一个将字符转换成ASCII或者副词的类,如何使用TestNG来做单元测试? 打开 Eclipse 创建一个 Maven 工程: ParameterTesting,其目录结构如下所示 - 类文件:CharUtils.java 的代码如下 - 2. TestNG @DataProvider示例 要测试它,创建一个接受两个参数(

  • 问题内容: 刚开始使用Robolectric,这似乎是我所需要的。但是,在使用SharedPreferences方面,我遇到了一些障碍。 我有两个测试案例 活动需要新的/空的sharedPreferences 活动期望其中已包含一些数据的sharedPreferences 对于测试用例1,测试按预期通过,所以一切都很好:) 但是,对于测试用例2,我似乎无法找出一种向Robolectric提供一些虚