TestNG DataProvider 从 testng.xml 配置文件读取测试数据?

2023-12-06

TestNG DataProvider 是否可以从 testng.xml 配置文件中读取测试数据?或者由于某种原因这是不现实的?我希望能够在套件级别和类级别从该文件读取测试数据。

那么,给定一个像这样的testing.xml 文件(我不确定它是否现实),我将如何做到这一点?我之前曾使用 XStream(或 Jackson)编写过 DataProvider,因此我非常熟悉自己的自定义 .xml 格式,但坚持 test.xml 的严格格式是我担心的地方。

下面的testing.xml显然是无效的,但我只是想展示我想做的事情:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="TestAll"> 
  <parameter name="hubUrl" value="http://localhost:4444/wd/hub"/>
  <parameter name="reportFile" value="CustomReport.html"/>
  <test name="etsy">
    <parameter name="reportFile" value="CustomReport.html"/>
    <classes>
      <class name="qa.examples.suite.TestSearch">
        <parameter name="appUrl"  value="http://etsy.com" type="java.lang.String"/> 
        <parameter name="browser"  value="Firefox" type="java.lang.String"/>    
        <parameter name="testEnabled" value="true" type="java.lang.Boolean"/> 
        <methods>                 
          <include name="testEtsySearch"/>
            <tests>
              <test>
                <parameter name="testNum" value="1" type="java.lang.Integer"/>
                <parameter name="searchTerm" value="cell phone" type="java.lang.String"/>
                <parameter name="searchTerm" value="batteries" type="java.lang.String"/>
              </test>
              <test>
                <parameter name="testNum" value="2" type="java.lang.Integer"/>
                <parameter name="searchTerm" value="buttons" type="java.lang.String"/>
                <parameter name="searchTerm" value="metal" type="java.lang.String"/>
              </test>
            </tests>
          </include>                       
        </methods> 
      </class>
      <class name="qa.examples.suite.TestFilters" />
    </classes>
    </test> 
</suite>

那么,这样的事情可能吗?如果是这样,你会怎么做?


尝试将 ITestContext 作为数据提供程序参数传递。 就像是:

@DataProvider(name = "DataProvider")
public static Object[][] Provider(ITestContext context) throws Exception
{
    String dataFile = context.getCurrentXmlTest().getParameter("dataFile");
}

套件 XML

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="suite"> 
  <parameter name="param1" value="val1"/>
  <test name="test">
    <parameter name="param2" value="val2"/>
    <classes>
      <class name="test.TestClass1" />
    </classes>
  </test> 
</suite>

测试班

package test;
import java.util.Map;
import org.testng.ITestContext;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class TestClass1 {

@DataProvider(name="Provider")
public Object[][] provider(ITestContext context)
{
 Map<String, String> testParams = context.getCurrentXmlTest().getLocalParameters();
 Map<String, String> suiteParams=context.getCurrentXmlTest().getSuite().getParameters();

 return new Object[][]{{suiteParams.get("param1"), testParams.get("param2")}};
}

@Test(dataProvider="Provider")
public void test1(String param1, String param2)
{
 System.out.println("Param1: " + param1);
 System.out.println("Param2: " + param2);
}

}

Output

[TestNG] Running:
/home/nightmare/workspace/test/suite.xml

Param1: val1
Param2: val2

===============================================
suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TestNG DataProvider 从 testng.xml 配置文件读取测试数据? 的相关文章

  • 如何将脚本作为 pytest 测试运行

    假设我有一个用简单脚本表示的测试assert 陈述 请参阅背景了解原因 例如 import foo assert foo 3 4 我如何以一种好的方式将该脚本包含在我的 pytest 测试套件中 我尝试了两种有效但不太好的方法 一种方法是将
  • 触发“对等方重置连接”

    我想测试当发生 对等方重置连接 错误时我们的应用程序 嵌入式 ftp 服务器 中发生的日志记录 这个帖子 https stackoverflow com questions 1434451 connection reset by peer很
  • 单元测试时静态元模型属性为 null

    我在外部包中有 Entity 类 这些类也有静态元模型 在我的应用程序的服务类中 我使用这些元模型和 EntityManager CriteriaBuilder CriteriaQuery 来检索我的数据 这在运行应用程序时工作得很好 但是
  • 对更改运行 PHPUnit 测试

    每当磁盘上的文件发生更改时 我想运行 PHPUnit 测试 或至少其中的一个子集 与您可以使用 进行的操作非常相似 咕噜手表 https github com gruntjs grunt contrib watch blob master
  • 如何在 Django Rest 框架中编写“删除”操作的测试

    我正在为 Django Rest Framework API 编写测试 我一直在测试 删除 我对 创建 的测试工作正常 这是我的测试代码 import json from django urls import reverse from re
  • 使用 jasmine 在 angularJS 中注入服务来测试控制器

    我想了解如何使用 jasmine 和 angularJS 测试我的代码 我编写了一个带有控制器和注入服务的测试项目 现在我想测试控制器并尝试模拟注入的服务 但我没有找到一种方法来测试我的控制器的 到达 功能 这是我的jsfiddle htt
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只
  • 修补在另一个函数中导​​入的函数

    为了避免循环导入 我被迫定义一个如下所示的函数 do something py def do it from helpers import do it helper do stuff 现在我希望能够测试这个功能do it helper修补完
  • 如何仅在测试时允许一个包访问另一个包的未导出数据?

    In Go 编程语言 第 11 2 4 节 有一个外部测试访问的示例fmt isSpace 通过声明IsSpace in fmt s export test go文件 这似乎是完美的解决方案 所以这就是我所做的 a a go package
  • Angular 7测试重试当模拟http请求无法实际重试时

    我有以下尝试使用 OAuth 的拦截器refresh token每当获得任何 401 错误 响应时 基本上 刷新令牌是在第一个 401 请求上获取的 获取后 代码会等待 2 5 秒 在大多数情况下 第二个请求不会触发错误 但如果触发错误 令
  • 在同一进程中使用不同版本的Python库

    我们正在开发一个Python 库 在开发过程中 我想使用该库的某些部分来测试它的新版本 也就是说 使用稳定的代码来测试开发代码 有没有办法在 python 中做到这一点 Edit 更具体地说 我们有一个库 LibA 里面有很多有用的东西 此
  • System.InvalidCastException:指定的强制转换无效

    使用 WatiN 的自动化正在进行中 使用几个并发线程来测试应用程序 很少有线程失败 日志报告 堆栈跟踪显示以下内容 System InvalidCastException Specified cast is not valid at SH
  • Python - 测试抽象基类

    我正在寻找测试抽象基类中定义的方法的方法 最佳实践 我能直接想到的一件事是对基类的所有具体子类执行测试 但有时这似乎有些过分 考虑这个例子 import abc class Abstract object metaclass abc ABC
  • 有 Mac 版的 IE 测试器吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 测试随机值 - 对这种方法的想法?

    好的 我一直在研究随机图像选择器和队列系统 因此您不会经常看到相同的图像 一切都很顺利 就我蹩脚的代码而言 until我到了随机位 我想测试一下 但是如何测试呢 没有Debug Assert i IsRandom 可悲的是 D 所以 我在用
  • 是什么原因导致“当测试模块已实例化时无法配置测试模块”?

    这是我的测试 describe ValueService gt it getValue should return real value gt expect true toBeTruthy 我有这个错误 失败 当测试模块已实例化时 无法配置
  • 您使用什么来通过其自定义协议来测试(功能/负载/压力)您的网络服务?

    我最近创建了一个回合制游戏服务器 可以接受数十万个并发客户端连接 长话短说 Linux 上的 epoll 通信基于简单 定制 基于线路的协议 该服务器允许客户端连接 寻找游戏比赛中的其他玩家 玩所述游戏 发送动作 聊天消息等 并在游戏结束时
  • TestNG 启动期间发生内部错误

    我创建了一个 TestNG 类 FirstTest java 当我将测试用例作为 TestNG Test 运行时 出现以下错误 期间发生内部错误 启动 FirstTest java lang NullPointerException Ecl
  • 如何显示 RSpec 测试生成的 SQL 查询日志?

    我正在为我的 Rails 3 应用程序编写规范 我想测试数据库事务是否真的有效 如果能够看到我的应用程序在规范驱动下生成的 sql 查询 这将非常有帮助 有没有办法像在 Rails 控制台中一样查看查询 我正在使用 Rails 3 0 9
  • 如何定义一个 pytest 夹具供给定测试子目录中的所有测试使用?

    给定一个目录tests有几个子目录 每个子目录都包含测试模块 如何创建一个pytest仅在特定子目录中找到的每个测试之前运行的固定装置 tests init py subdirXX test module1 py test module2

随机推荐

  • 为什么在使用函数时总是执行 Angular 2 中的 *ngIf ?

    我正在尝试使用 Angular 2 创建一个应用程序 并在我的应用程序中有一个身份验证服务 我的 html 模板是这样的
  • 如何使用 kafka 使用 python 连接 JDBC 接收器和源

    我想从一个系统直播到另一个系统 我正在使用 kafka python 并且能够在本地进行直播 发现连接器可以处理多个设备 有人可以建议我一种使用连接器在 python 中实现它的方法吗 Kafka Connect 是一个 Java 框架 而
  • RESTful 服务 - WSDL 等效项

    我一直在阅读有关 REST 和 SOAP 的内容 并了解为什么实施 REST 比使用 SOAP 协议更有利 但是 我仍然不明白为什么 REST 世界中没有 WSDL 等价物 我看到过一些帖子说 WSDL 不需要 或者说它在 REST 世界中
  • 将数据框转换为 xts

    我正在尝试使用 as xts 方法将数据帧转换为 xts 对象 这是我的输入数据框 q q t x 1 2006 01 01 00 00 00 1 2 2006 01 01 01 00 00 2 3 2006 01 01 02 00 00
  • 在 WebGL for 循环中使用制服(或类似的)的解决方法?

    我正在致力于在 WebGL 中实现片段着色器 并遇到了只能在 for 循环中使用常量表达式的限制 有人对此有任何合适的解决方法吗 在我的具体情况下 我正在实现双边过滤器 并且当前在我的片段着色器中将窗口大小指定为常量 但希望能够从 Java
  • 实体框架 - “无法创建‘闭包类型’类型的常量值...”错误

    为什么我会收到错误 无法创建 闭包类型 类型的常量值 仅有的 支持基本类型 例如 Int32 String 和 Guid 这个背景 当我尝试枚举以下 Linq 查询时 IEnumerable
  • 除了使用时间来生成随机数之外,还有其他选择吗?

    我试图在计算集群中同时运行一段代码的多个实例 2000 个实例左右 它的工作方式是 我提交作业 集群将在节点经常打开时运行它们 每个节点有多个作业 这似乎在使用时间种子的随机数生成中为大量实例生成相同的值 我可以使用一个简单的替代方案吗 可
  • 使用 python 列表理解的毕达哥拉斯三元组

    我可以使用 for 循环找出毕达哥拉斯三元组 如下所示 def triplet n Find all the Pythagorean triplets between 1 and n inclusive for a in range n 1
  • 无法将类型“double”隐式转换为“string”

    我正在编写一个程序来获取圆的半径并输出直径 面积和周长 我尝试从直径开始 但不断收到错误 无法将类型 double 隐式转换为 string 我已经使用整数完成了类似的程序 但我一生都无法弄清楚如何在文本框中接收浮点数并计算它们以便我可以输
  • 缩进#define

    我知道 defines 等通常不会缩进 为什么 我目前正在编写一些代码 其中混合了可怕的内容 defines ifdefs elses endif等等 所有这些经常与普通的 C 代码混合在一起 的非缩进 defines 使它们难以阅读 以及
  • 日期查找表 (1990/01/01:2041/12/31)

    我使用 DATE 的主表来查找日期和其他值 以便控制我的应用程序中的多个事件 间隔和计算 它包含从 01 01 1990 到 12 31 2041 之间每一天的行 我如何使用此查找表的一个示例是 一位顾客典当了一件物品 JAN 31 201
  • 如何在 Django 模型中存储元组列表?

    是否可以存储元组的字段Model在姜戈 就我而言 我有一个模型翻译器 翻译者应该存储有关他可以翻译哪些语言的信息 但可能存在翻译人员无法将英语翻译成德语的情况 但他 她可以反方向进行翻译 所以一个对象翻译器可以存储这个 从德语到英语 从 荷
  • 如何检测用户在 Angular2 中导航回来?

    我有一个组件 我需要检测用户是否在浏览器中按下后退按钮来导航回来 目前我正在订阅路由器事件 constructor private router Router private activatedRoute ActivatedRoute th
  • 如何使用python-docx替换Word文档中的文本并保存

    同一页面中提到的 oodocx 模块将用户引导至似乎不存在的 examples 文件夹 我已经阅读了 python docx 0 7 2 的文档 以及我在 Stackoverflow 中可以找到的有关该主题的所有内容 所以请相信我已经完成了
  • HttpConnection 无法在真实设备中工作 -Blackberry

    这是我的代码 public String Serverconnection String url String line if DeviceInfo isSimulator url url deviceSide true try HttpC
  • 通过 Net::HTTP 下载 zip 文件

    我正在尝试从下载最新的 zipWordPress org使用 Net HTTP 这是我到目前为止所得到的 Net HTTP start wordpress org http resp http get latest zip open a z
  • 登录-AzureRmAccount 和选择-AzureRmSubscription

    我已经在 Windows Server 2012 R2 上安装了 AzureRm 和 Azure 模块 我可以从此模块运行其他 cmdlet 例如 AddAzureRmAccount Get AzureRmSubscription 但 Lo
  • Android,沿路径移动位图?

    我想知道是否可以从路径中选择坐标来随着时间的推移绘制位图 例如 我有一张太阳的图像 我想随着时间的推移沿着弧形路径移动它 有没有什么方法可以定义这样的路径 然后沿着它移动 这样我就不必进行数学计算 Thanks 是的 可以沿着路径移动图像
  • 如何在 MySQL 中设置日语模式排序规则

    我在整理方面遇到问题 我想设置排序规则以支持日语 例如 当 table firstname 包含 时 包含 的查询应返回该记录 提前致谢 这就像 大写 和 小写 对吗 mysql gt SELECT COLLATE utf8 general
  • TestNG DataProvider 从 testng.xml 配置文件读取测试数据?

    TestNG DataProvider 是否可以从 testng xml 配置文件中读取测试数据 或者由于某种原因这是不现实的 我希望能够在套件级别和类级别从该文件读取测试数据 那么 给定一个像这样的testing xml 文件 我不确定它