《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)

简介: 【6月更文挑战第19天】本文介绍了使用TestNG框架配置XML文件来管理测试用例的分组和依赖关系。

1.简介

上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法)。废话不说,直接上干货。

2.实例

测试组:一个组可包含多个测试方法,可进行组嵌套。

2.1代码设计

1.test1属于功能测试,test2属于接口测试,test3属于接口和功能测试 ,test4是不属于任何组,如下图所示:

2.参考代码

package library;


import org.testng.annotations.Test;


/**

* @author 北京-宏哥

*

* @公众号:北京宏哥

*

* 《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试(详解教程)

*

* 2022年3月05日

*/


public class TestDepend {

   

 @Test(groups = {"Function"})

 public void test1() {

     

     System.out.println("Function-Test");

 }

 

 @Test(groups = {"API"})

 public void test2() {

     

     System.out.println("API-Test");

 }

 

 @Test(groups = {"function","api"})

 public void test3() {

     

     System.out.println("function and api");

 }

 

 @Test

 public void test4() {

     

     System.out.println("not in API and not in Function");

 }

}

3.运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

2.2仅运行API测试

1.仅运行API测试 时,xml文件的配置,如下图所示:

2.参考代码

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<!-- Suite相关设置,这里paraller是执行的模式,有tests classes methods三种取值,thread-count表示两个线程执行用例 -->

<suite name="Suite" parallel="tests" thread-count="2">

 <!--<test name="Test">

     <parameter name="Browser" value="Firefox" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test> Test -->

 <!--<test name="Test1">

     <parameter name="Browser" value="Chrome" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test>  Test -->

 <test name="example1">

     <groups>

         <run>

             <include name="API" />

         </run>

     </groups>

     <classes>

         <class name="library.TestDepend" />

     </classes>

 </test>

</suite> <!-- Suite -->

3.选中xml文件,运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

2.3仅运行function

从上边实例可以看出,结果是只运行了API方法的测试用例,如果只运行功能测试,这时把api换成function即可,如下图所示:

2.4运行API和功能测试

1.xml文件的配置,如下图所示:

2.参考代码

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<!-- Suite相关设置,这里paraller是执行的模式,有tests classes methods三种取值,thread-count表示两个线程执行用例 -->

<suite name="Suite" parallel="tests" thread-count="2">

 <!--<test name="Test">

     <parameter name="Browser" value="Firefox" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test> Test -->

 <!--<test name="Test1">

     <parameter name="Browser" value="Chrome" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test>  Test -->

 <test name="example1">

     <groups>

         <run>

               <include name="API" />

             <include name="Function" />

         </run>

     </groups>

     <classes>

         <class name="library.TestDepend" />

     </classes>

 </test>

</suite> <!-- Suite -->

3.选中xml文件,运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

3.exclude

实例2中,介绍的是include。这里宏哥再介绍一下exclude。执行除了某用例之外的其他用例。例如,执行除了API接口的其他用例。

1.xml文件的配置,如下图所示:

2.参考代码

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<!-- Suite相关设置,这里paraller是执行的模式,有tests classes methods三种取值,thread-count表示两个线程执行用例 -->

<suite name="Suite" parallel="tests" thread-count="2">

 <!--<test name="Test">

     <parameter name="Browser" value="Firefox" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test> Test -->

 <!--<test name="Test1">

     <parameter name="Browser" value="Chrome" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test>  Test -->

 <test name="example1">

     <groups>

         <run>

               <exclude name="API" />

         </run>

     </groups>

     <classes>

         <class name="library.TestDepend" />

     </classes>

 </test>

</suite> <!-- Suite -->

3.选中xml文件,运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

4.正则表达式来写组名

这里先把组名API改成了 API test,正则用来代替组名较长的时候

1.xml文件的配置,如下图所示:

2.参考代码

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<!-- Suite相关设置,这里paraller是执行的模式,有tests classes methods三种取值,thread-count表示两个线程执行用例 -->

<suite name="Suite" parallel="tests" thread-count="2">

 <!--<test name="Test">

     <parameter name="Browser" value="Firefox" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test> Test -->

 <!--<test name="Test1">

     <parameter name="Browser" value="Chrome" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test>  Test -->

 <test name="example1">

     <groups>

         <run>

               <include name="API.*" />

         </run>

     </groups>

     <classes>

         <class name="library.TestDepend" />

     </classes>

 </test>

</suite> <!-- Suite -->

3.选中xml文件,运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

5.组嵌套

每个用例都要归属于一个组名,所有组都归All管理,这样在xml中run一个All 即可。

1.xml文件的配置,如下图所示:

2.参考代码

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<!-- Suite相关设置,这里paraller是执行的模式,有tests classes methods三种取值,thread-count表示两个线程执行用例 -->

<suite name="Suite" parallel="tests" thread-count="2">

 <!--<test name="Test">

     <parameter name="Browser" value="Firefox" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test> Test -->

 <!--<test name="Test1">

     <parameter name="Browser" value="Chrome" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test>  Test -->

 <test name="example1">

     <groups>

         <define name="All">

                <include name="API Test" />

                <include name="Function" />

         </define>

         <run>

               <include name="All" />

         </run>

     </groups>

     <classes>

         <class name="library.TestDepend" />

     </classes>

 </test>

</suite> <!-- Suite -->

3.选中xml文件,运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

6.其他

根据xml配置文件中的  groups 的<dependencies>来做用例组依赖执行。

1.xml文件的配置,如下图所示:

2.参考代码

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<!-- Suite相关设置,这里paraller是执行的模式,有tests classes methods三种取值,thread-count表示两个线程执行用例 -->

<suite name="Suite" parallel="tests" thread-count="2">

 <!--<test name="Test">

     <parameter name="Browser" value="Firefox" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test> Test -->

 <!--<test name="Test1">

     <parameter name="Browser" value="Chrome" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test>  Test -->

 <test name="example1">

     <groups>

         <dependencies>

                <group name="API" depends-on="Function Not"/>

         </dependencies>

     </groups>

     <classes>

         <class name="library.TestDepend" />

     </classes>

 </test>

</suite> <!-- Suite -->

3.选中xml文件,运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

测试用例组的顺序是:先执行被依赖的组的方法用例,再执行没有依赖关系的 最后执行需要依赖关系的用例方法。

7.小结

好了,今天时间不早了,而且知识点特别的简单,今天就分享到这里,下一篇宏哥利用实际例子讲解一下依赖测试。



每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问):


Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

相关文章
|
7天前
|
人工智能 运维 监控
当AI遇上自动化:运维测试终于不“加班”了
当AI遇上自动化:运维测试终于不“加班”了
86 9
|
1月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
2月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
2月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
312 0
|
29天前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
229 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
13天前
|
数据采集 人工智能 自然语言处理
Playwright MCP 浏览器自动化框架全面解析
Playwright MCP是微软推出的开源项目,结合Playwright与MCP协议,让AI通过结构化数据直接操作浏览器。告别传统视觉识别,实现高效、精准的网页自动化,广泛应用于测试、爬虫、办公自动化等场景,大幅提升效率与可靠性。
|
23天前
|
自然语言处理 前端开发 测试技术
使用 Playwright MCP 实现 UI 自动化测试
本文介绍如何结合Playwright与MCP协议实现智能化UI自动化测试。通过自然语言指令控制浏览器,降低技术门槛,提升效率,并涵盖环境搭建、核心功能、实战案例及最佳实践,展现对话式自动化的未来趋势。
|
2月前
|
人工智能 IDE 测试技术
Browser-Use在UI自动化测试中的应用
Browser-Use是一款浏览器自动化工具,具备视觉与HTML解析、多标签管理、操作记录与复现、自定义操作、自我纠正及并行执行等功能,助力AI智能体高效完成网页任务。
229 0
|
3月前
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
165 0
|
3月前
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。