Java - Test - TestNG: testng.xml 元素 package
1. 概述
- 简介 package 元素
- packages
- package
- exclude
- include
2. 背景
准备
- 自动生成了 testng.xml 文件
- 已经基本了解了 testng.xml 的结构
问题
- 如何约束测试范围
- 假设我有很多的测试用例
- 我想一次执行所有
- 或者一次执行一部分
- 假设我有很多的测试用例
- 如何约束测试范围
3. 环境
ide
- idea
- 2018.2
- idea
配置文件
- testng.xml
测试包结构
- com.test01.Test1
- com.test02.Test2
- com.test03.Test3
约定
- 配置文件, 我只截取 suite 以下的部分
4. 场景
1. 场景1: 我想执行所有测试类
概述
- 执行所有测试类
配置文件
<suite name="All Test Suite">
<test verbose="2" preserve-order="true" name="test 1">
<packages>
<package name="com.test01" />
<package name="com.test02" />
<package name="com.test03" />
</packages>
</test>
</suite>
解释
packages
概述
- 包的根元素
本质
- 就是个 容器类元素
- 告诉 testng, 这下面都是 package
- 感觉这么设计, 可能是为了效率吧
- package, class, group 执行的机制有不同
- 来回切换损失性能
- 所以尽量集中到一起
- 就是个 容器类元素
注意
- 一个 test 只能有一个
- 多了会报错
- 一个 test 只能有一个
package
概述
- 包元素
本质
- 指定需要执行的包
属性
- name
- 测试类的名字
- name
其他
- 使用
- 需要几个包, 直接写几个包就行了
- 使用
2. 场景2: 要执行的包有点多, 我能不能偷个懒
概述
- 执行所有测试类
- 想偷懒
配置文件
<suite name="All Test Suite">
<test verbose="2" preserve-order="true" name="test 1">
<packages>
<package name="com.*" />
</packages>
</test>
</suite>
解释
- package
概述
- 这里使用了 正则
com.*
- 正则
- 用 正则 匹配了 包名
- 注意
- testng 没有 通配符
- 没有 wildcard
- testng 没有 通配符
- 正则
- package
3. 场景3: 要执行的包有点多, 但我又不想执行所有的包
概述
- 执行大部分测试
- 但有那么些类, 我又不想执行
配置文件
<suite name="All Test Suite">
<test verbose="2" preserve-order="true" name="test 1">
<packages>
<package name="com.*" >
<exclude name="com.test03" />
</package>
</packages>
</test>
</suite>
解释
- exclude
- 概述
- 黑名单机制
- 名单里的 包, 不会再执行
- 黑名单机制
- 概述
- exclude
4. 场景4: 要执行的包有点多, 但我又不想执行所有的包
概述
- 执行少部分测试
- 好像和上次又有那么点不同
- 执行少部分测试
配置文件
<suite name="All Test Suite">
<test verbose="2" preserve-order="true" name="test 1">
<packages>
<package name="com.*" >
<include name="com.test03" />
</package>
</packages>
</test>
</suite>
解释
- include
- 概述
- 白名单机制
- 只会执行 白名单里 的包
- 正则
- 白名单机制
- include 和 exclude 都支持正则
- testng 不支持通配符
- wildcard
- 概述
- 其他
- 在同一个 package 下, 最好不要和 exclude 混用
- include 和 exclude 都是支持正则的
- include
5. 一些问题
- 概述
- 想到的一些问题
1. 问题1: 一个类同时出现在多个 package标签 里, 执行几次
场景
- 同一个 包
- 出现在了 多个 package 元素里
结果
- 包里的测试方法, 只执行一次
2. 问题2: 连续两次 include 相同内容
场景
- 同一个类, include 两次
结果
- 包里的测试方法, 只执行一次
3. 问题3: 连续两次 exclude 相同内容
场景
- 同一个类, exclude 两次
结果
- 包里方法不执行
- 测试正常执行
4. 问题4: 先 include 再 exclude
场景
- 同一个包, 先 include 再 exclude
结果
- 包被 exclude
- 用例正常执行
5. 问题5: 先 exclude 再 include
场景
- 同一个包, 先 exclude 再 include
结果
- 包被 exclude
- 感觉是 exclude 后, 无法再 include 回来
- 用例正常执行
- 包被 exclude
6. 结论
- 相同操作, 多次执行
- 只算执行一次
- include 和 exclude 同时存在
- exclude 优先级高
- 实战建议
- 先想清楚, 自己需要什么样的范围
- 感觉可以作为注释写在配置里
- 先 include, 再 exclude
- 简化逻辑, 增强可读性
- 只对同一个包 做最多一次 include 和 一次 exclude
- 先想清楚, 自己需要什么样的范围
ps
- 文档和参考
文档
- 官方文档
- 老实说就一个页面
- 从头拉到尾
- 东西是都讲了, 但是只能当个字典来查
- 你需要有些基础才行
- 但是基础怎么来呢
- 好些东西还是没讲
- 东西是都讲了, 但是只能当个字典来查
- 官方文档
书籍
- testng beginner's guide
- 书不错
- 13 年的
- 没有中文
- 书不错
- testng beginner's guide
dtd
- testng.xml 的 dtd 文件
概述
- xml 的描述文件
- 正确性没问题
- 毕竟 testng 就是按照这个来解析的
- 注释上也相对清晰
- 可以和 官网 或者 参考书 形成互补
- 当然看起来有点麻烦
- 需用知道 dtd 的语法
内容
- 元素
- 元素的意义
- 元素的属性
- 元素的子元素
- 元素
- testng.xml 的 dtd 文件
Java - Test - TestNG: testng.xml 元素 package的更多相关文章
- Java解析和生成XML
1.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAttribute @XmlAccesso ...
- Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)
1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...
- Java - Test - TestNG: testng.xml 简介
1. 概述 简介 testng.xml 中的格式, 元素 2. 背景 testng.xml 概述 测试套件 的配置文件 问题 一下生成了那么多内容 我有点看不懂 一上来就看不懂, 其实很正常, 慢慢说 ...
- testng的xml文件说明(TestNG DTD)
testNG启发自JUnit和NUnit的一种测试框架,通过使用testNG使的测试更简单.,比如如下的一些特点: 1.通过注释来管理测试 2.多线程并发执行测试,且是安全的 3.支持数据驱动测试 4 ...
- java 测试框架 TestNG
Java中print.printf.println的区别 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和prin ...
- Java+maven+selenium3+testng 自动化测试环境IDEA
idea .java环境变量jdk maven安装及环境变量配置这里就不多说了,网上有很多教程 这里我们只检测一下java.maven环境是否安装成功 win+R,运行cmd命令行:mvn -v ...
- Exception in thread "main" java.lang.NoSuchMethodError: org.testng.TestNG.configure(Lorg/testng/CommandLineArgs;)V
TestNG运行时报以下错误: Exception in thread "main" java.lang.NoSuchMethodError: org.testng.TestNG. ...
- jenkins通过maven指定testng的xml文件,并给testng代码传参
1.jenkins设置参数化构建,设置要传的参数名和值 2.指定testng的xml文件,在jenkins的输入以下 3.在pom.xml文件分别引用jenkins的参数,设置两个property & ...
- Ant中批量调用TestNG的XML文件,并调用TestNgXlst生成漂亮的html测试报告
from:http://blog.csdn.net/bwgang/article/details/7865184 1.在Ant中设置如下: <target name="run_test ...
随机推荐
- vue 报错碰到的一些问题及其规范
报错信息:Expected error to be handled(需要处理的错误) 这是因为回调函数里面的参数error没有运用到,所以可以不设置参数,或者在回调函数内console.log(err ...
- [Note]prufer
[Note]Prufer编码 实现 不断删除度数为\(1\)的最小序号的点,并输出与其相连的节点的序号,直至树中只有两个节点. 性质 任何一棵\(n\)节点的树都可以唯一的用长度为\(n-2\)的pr ...
- 题解 P5733 【【深基6.例1】自动修正】
题目传送门 分析: 1.这道题可以说是一个字符串的练习好题.我们先来了解一下字符串.在这道题中,建议使用\(string\) \(string\)是\(C++\).\(java\).\(VB\)等编程 ...
- Linux环境下C语言线程创建---简单代码
在Linux环境下用C语言编写线程创建. //file name: pthreadtext.c #include <stdio.h> #include <pthread.h> ...
- 【Linux】解决Linux服务器内存不足问题
在Linux服务器上使用Jmeter进行压测的时候,遇到了一个错误: 根据这里的提示: Java HotSpot(TM) -Bit Server VM warning: INFO: os::commi ...
- 三分钟快速上手TensorFlow 2.0 (后续)——扩展和附录
TensorFlow Hub 模型复用 TF Hub 网站 打开主页 https://tfhub.dev/ ,在左侧有 Text.Image.Video 和 Publishers 等选项,可以选取关注 ...
- TCP/IP详解,卷1:协议--第8章 Traceroute程序
引言 由Van Jacobson编写的Tr a c e r o u t e程序是一个能更深入探索T C P / I P协议的方便可用的工具. 尽管不能保证从源端发往目的端的两份连续的 I P数据报具有 ...
- IDEA更换背景颜色与字体
打开IDEA 选择左上角的File -> Setting -> Editor -> Color Scheme 就可以设置 黑白背景 默认为白色 可以选择 Darcul ...
- day01_2spring3
Bean基于XML和基于注解的装配 一.Bean基于XML的装配 1.生命周期接着day01_1来讲(了解) Bean生命周期的如图所示:用红色框起来的都是我们要研究的! 如图Bean is Read ...
- 16day 路径信息系列
../ 上一级目录 ./ 当前路径 ~ 返回到家目录 - 两个目录之间进行快速切换 An argument of - is equivalent to $OLDPWD(环境变量) 补充说明: [roo ...