《手把手教你》系列基础篇(七十八)-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工具基础使用教程

相关文章
|
2月前
|
敏捷开发 测试技术 API
测试金字塔:构建高效自动化测试策略的基石
测试金字塔:构建高效自动化测试策略的基石
296 116
|
2月前
|
测试技术 API 数据库
测试金字塔:构建高效自动化测试策略的基石
测试金字塔:构建高效自动化测试策略的基石
321 114
|
3月前
|
监控 测试技术 API
n8n自动化测试教程 (1):环境搭建与初识n8n
n8n是一款开源、可视化的工作流自动化工具,测试工程师可通过拖拽节点快速构建API测试流程,实现测试编排、数据管理、自动化监控与告警等功能,提升测试效率与覆盖率。
|
3月前
|
安全 Shell 持续交付
Debian Apache 自动化部署教程:4 种方法,从个人到企业批量装机
本文介绍在 Debian 系统中实现 Apache 自动化部署的 4 种实用方法,涵盖个人单机与企业批量部署场景。内容包括使用 Bash 脚本一键安装、通过 PXE 实现网络批量部署、借助 Ansible/Puppet 进行多机统一配置管理,以及利用 Preseed 文件自动完成安装配置。文章还提供操作示例与避坑建议,帮助用户提升部署效率,降低人为错误。
162 0
|
5月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
5月前
|
Web App开发 存储 前端开发
Python+Selenium自动化爬取携程动态加载游记
Python+Selenium自动化爬取携程动态加载游记
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
1525 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
368 31
Selenium IDE:Web自动化测试的得力助手
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
762 17
Selenium:强大的 Web 自动化测试工具
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
464 11