如何在TestNG中获取运行时的测试用例细节?

这篇文章将讨论如何在运行时获取测试用例的细节。我们可能在不同的场景中需要这些信息,比如创建定制的报告或者开发一个实时跟踪系统来监视测试用例的进度。

让我们从使用TestNG运行测试套件开始开始。然后,我们将尝试检索每个测试用例的细节,当它被标记为通过或失败时。

执行测试套件
制作两个测试类

我们将创建两个测试类,CodekruTest1和CodekruTest2。

CodekruTest1.java

package org.website.codekru;import org.testng.annotations.Test;public class CodekruTest1 {@Testpublic void testCase1() {System.out.println("Executing test case 1 in CodekruTest1");}@Testpublic void testCase2() {System.out.println("Executing test case 2 in CodekruTest1");}}

CodekruTest2.java

package org.website.codekru;import org.testng.annotations.Test;public class CodekruTest2 {@Testpublic void testCase1() {System.out.println("Executing test case 1 in CodekruTest2");}@Testpublic void testCase2() {System.out.println("Executing test case 2 in CodekruTest2");}}
通过testng.xml执行这两个类

我们将使用testng.xml文件来运行上面提到的类。使用testng.xml运行测试用例可以更好地控制执行过程,并深入了解用例将如何执行。

<suite name="codekru"><test name="Test1"><classes><class name="org.website.codekru.CodekruTest1" /></classes></test><test name="Test2"><classes><class name="org.website.codekru.CodekruTest2" /></classes></test>
</suite>  

我们创造了两个测试(test),每个测试包含一个类。让我们运行上面的XML文件。

Executing test case 1 in CodekruTest1
Executing test case 2 in CodekruTest1
Executing test case 1 in CodekruTest2
Executing test case 2 in CodekruTest2
在运行时获取测试用例详细信息

TestNG提供了一个带有几个方法的ITestlog接口,这些方法允许我们获得关于正在执行的测试用例的详细信息。例如,我们可以使用onTestSuccess()方法来检索基本数据点,例如测试用例结果、运行时信息和其他相关细节,只要测试用例被标记为通过。通过利用这些功能,我们可以获得对自动化测试套件性能的有价值的洞察,并获得测试条件下应用程序行为的详细视图。

让我们来创建一个实现ITesternet接口的类。我们将尝试在测试用例通过时检索测试用例的详细信息。

package org.website.codekru;import org.testng.ITestListener;
import org.testng.ITestResult;public class TestListenerClass implements ITestListener {public void onTestSuccess(ITestResult result) {}}

我们现在将在OnTestSuccess()方法中获取以下数据点:

  • 测试用例的名称
  • 测试名称(testng.xml中的测试标记中使用的测试名称)
  • 当前测试(test)中有多少个测试用例
  • 到目前为止,有多少病例被标记为通过

在onTestSuccess()中传递的ITestResult参数描述了测试的结果,因此可以用于查找上述数据点。

如何获取当前执行的测试用例/方法的名称?
String currentTestCaseName = result.getMethod().getMethodName();
如何获取测试的名称(在测试标记中传递的名称)
String currenTestName = result.getTestContext().getCurrentXmlTest().getName();
如何获得测试中的测试用例总数?
int totalCasesInTheTest = result.getTestContext().getAllTestMethods().length;
如何获取当前测试(测试标签)中到目前为止通过的案例数?
int passedCasesTillNow = result.getTestContext().getPassedTests().size()+1;

我们将该值递增1以计数当前测试用例。

整个代码

package org.website.codekru;import org.testng.ITestListener;
import org.testng.ITestResult;public class TestListenerClass implements ITestListener {public void onTestSuccess(ITestResult result) {String currentTestCaseName = result.getMethod().getMethodName();String currenTestName = result.getTestContext().getCurrentXmlTest().getName();int totalCasesInTheTest = result.getTestContext().getAllTestMethods().length;int passedCasesTillNow = result.getTestContext().getPassedTests().size()+1;System.out.println("Current Test Case Name: " + currentTestCaseName);System.out.println("Current Test Name: " + currenTestName);System.out.println("Total Case In The Test: " + totalCasesInTheTest);System.out.println("Passed Cases Till Now In The test: " + passedCasesTillNow);}}

要在测试执行中使用该脚本,请将其包含在testng.xml文件中,如下所示:

<suite name="codekru"><listeners><listener class-name="org.website.codekru.TestListenerClass" /></listeners><test name="Test1"><classes><class name="org.website.codekru.CodekruTest1" /></classes></test><test name="Test2"><classes><class name="org.website.codekru.CodekruTest2" /></classes></test>
</suite>  

现在,执行上面的XML文件。

这就是如何轻松地检索关于测试用例的相关信息。我们只使用了onTestSuccess()方法,但根据您的需求,您可能还希望使用其他方法,例如onTestStart()或onTestFailure()。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【授时防火墙】GPS北斗卫星授时信号安全防护装置系统

【授时防火墙】GPS北斗卫星授时信号安全防护装置系统 【授时防火墙】GPS北斗卫星授时信号安全防护装置系统 1、装置概述 卫星信号安全防护装置&#xff08;以下简称“防护装置”&#xff09;是一款专门针对卫星导航授时安全的设备。该设备能接收 BD 系统和 GPS 系统卫星信号&am…

InternLM2-Chat-1.8B 模型测试

在interStudio进行InternLM2-Chat-1.8B模型访问&#xff0c;进入开发机后 配置基础环境 新建conda环境并且进入 conda create -n demo python3.10 -y conda activate demo 下载pytorch等相关包 conda install pytorch2.0.1 torchvision0.15.2 torchaudio2.0.2 pytorch-cuda11.…

ChernoCPP 2

视频链接&#xff1a;【62】【Cherno C】【中字】C的线程_哔哩哔哩_bilibili 参考文章&#xff1a;TheChernoCppTutorial_the cherno-CSDN博客 Cherno的C教学视频笔记&#xff08;已完结&#xff09; - 知乎 (zhihu.com) C 的线程 #include<iostream> #include<th…

四、MySQL读写分离之MyCAT

一、读写分离概述 1、什么是读写分离&#xff1a; 读写分离&#xff1a;就是将读写操作分发到不同的服务器&#xff0c;读操作分发到对应的服务器 &#xff08;slave&#xff09;&#xff0c;写操作分发到对应的服务器&#xff08;master&#xff09; ① M-S (主从) 架构下&…

Java设计模式:外观模式之优雅门面(九)

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在软件工程中&#xff0c;设计模式是解决常见设计问题的经验总结&#xff0c;它为开发者提供了一种通用的、可复用的解决方案。外…

书生浦语训练营2期-第二节课笔记作业

目录 一、前置准备 1.1 电脑操作系统&#xff1a;windows 11 1.2 前置服务安装&#xff08;避免访问127.0.0.1被拒绝&#xff09; 1.2.1 iis安装并重启 1.2.2 openssh安装 1.2.3 openssh服务更改为自动模式 1.2.4 书生浦语平台 ssh配置 1.3 补充&#xff08;前置服务ok…

Thread的基本用法

目录 正文&#xff1a; 1.线程创建 2.线程休眠 3.获取线程实例 4.线程中断 5.线程等待join() 总结&#xff1a; 正文&#xff1a; 1.线程创建 线程创建是多线程编程的第一步&#xff0c;它涉及到创建一个可以并行执行的新线程。在Java中&#xff0c;有几种不同的方法可…

【Laravel】08 RESTful风格

【Laravel】08 视图模板动态渲染数据 1. RESTful风格 1. RESTful风格 (base) ➜ example-app php artisan make:model Blog -mc Model created successfully. Created Migration: 2024_04_01_143040_create_blogs_table Controller created successfully.(base) ➜ example-…

深入理解微信小程序的自定义组件模型

微信小程序作为一个独立的应用开发平台,提供了丰富的组件库供开发者使用。但在某些复杂的业务场景下,我们需要根据自身的需求来定制化组件。小程序为我们提供了自定义组件的能力,让我们可以更灵活地构建应用界面。 如果对微信小程序自定义组件还不太清楚的&#xff0c;请参考 …

简述JMeter实现分布式并发及操作

为什么要分布式并发&#xff1f; JMeter性能实践过程中&#xff0c;一旦进行高并发操作时就会出现以下尴尬场景&#xff0c;JMeter客户端卡死、请求错误或是超时等&#xff0c;导致很难得出准确的性能测试结论。 目前知道的有两个方法可以解决JMeter支撑高并发&#xff1a; …

pta 1036 跟奥巴马一起编程

1036 跟奥巴马一起编程 分数 15 全屏浏览 切换布局 作者 CHEN, Yue 单位 浙江大学 美国总统奥巴马不仅呼吁所有人都学习编程&#xff0c;甚至以身作则编写代码&#xff0c;成为美国历史上首位编写计算机代码的总统。2014 年底&#xff0c;为庆祝“计算机科学教育周”正式启…

阿里 对象存储OSS 云存储服务

1.简介 对象存储服务(Object Storage Service ,OSS) 是一种 海量、安全、低成本、高可靠的云存储服务&#xff0c;适合存放任意类型的文件。容量和处理能力弹性扩展&#xff0c;多种存储类型供选择&#xff0c;全面优化存储成本。 2.如何使用。参考文档 看文档&#xff0c;说的…

【python从入门到精通】-- 第四战:语句汇总

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

数据库安装的一些内容

这两天在研究整理上课数据库和web要求安装操作的软件 晚点再写下去 1.SQL server 2012 安装的过程中出现不少问题&#xff0c;根据网上的教程以及老师发的实验指导书首先安装SQL server (1)在安装规则检测之后&#xff0c;没有按照步骤进入下一步——设置角色&#xff1b; …

docker从入门到熟悉

一、什么是docker&#xff1f; Docker是一个用于开发&#xff0c;交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开&#xff0c;从而可以快速交付软件。借助Docker&#xff0c;您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付…

GPT3, llama2, InternLM2技术报告对比

GPT3&#xff08;September 22, 2020&#xff09;是大语言应用的一个milestone级别的作品&#xff0c;Llama2&#xff08;February 2023&#xff09;则是目前开源大模型中最有影响力的作品&#xff0c;InternLM2&#xff08;2023.09.20&#xff09;则是中文比较有影响力的作品。…

Linux文件搜索工具(gnome-search-tool)

opensuse下安装: sudo zypper install gnome-search-tool 操作界面:

JNews Theme最新版本:新闻网站首选的WordPress主题,功能强大且灵活

JNews Theme最新版本&#xff1a;新闻网站的首选WordPress主题 在当今数字化时代&#xff0c;新闻网站扮演着至关重要的角色。为了打造一个吸引读者、功能齐全的新闻平台&#xff0c;选择一款合适的WordPress主题显得尤为关键。而JNews Theme最新版本正是新闻网站的首选WordPr…

MacOS - brew 和 brew cask 有什么区别?

brew 是 ruby 的包管理&#xff0c;后来看 yangzhiping 的博客介绍了 brew cask&#xff0c;感觉 cask 是更好的关联关系管理&#xff0c;但是&#xff0c;我后来使用过程中&#xff0c;发现很多软件 brew cask 里没有&#xff0c;但是 brew 里面倒是挺多&#xff01;今天来给说…

java面试题(Redis)

事情干的差不多了&#xff0c;开刷面试题和算法&#xff0c;争取在短时间内快速成长&#xff0c;理解java面试的常见题型 一、redis使用场景&#xff1a; 缓存&#xff1a;穿透、击穿、雪崩 双写一致、持久化 数据过期、淘汰策略 分布式锁&#xff1a;setnx、redisson 计数…