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 ...
随机推荐
- Appium学习2-Appium-desktop的使用
安装: 下载路径:https://github.com/appium/appium-desktop/releases 选择最新的安装包即可. 使用 1.点击打开应用程序,进入到配置项. 2.配置以下信 ...
- Django Form组件的扩展
Form组件扩展 1.用Form组件自带的正则扩展 通过Django内置的字段:Validators自定义验证规则 方式一: from django.forms import Form from dj ...
- TCL 字典
https://www.yiibai.com/tcl/tcl_dictionary.html 词典是用于值映射到建的布置. 常规字典的语法: dict set dictname key value ...
- JavaScript变量的传递方式
废话不多说,直接上案例: [案例] 1.访问变量 按值: function addM(num) { num += 5; return num; } var cnt = 10; var result = ...
- OpenCV3+VS2015 经常出现debug error abort()has been called问题
方案1:图片路径错误:查看imread的路径
- 为什么hashmap的容量永远要是2的次方
源码hashmap.java文件中有个函数叫tableSizeFor(),他的作用是,通过-1>>>n-1返回一个大于n的最小二次幂,n为map之前的容量,而函数返回值就是扩容的二次 ...
- 数据库接口基础类 oracle,sql server
1.为数据库读取基类 public class DBBase : IDisposable { public virtual void Dispose() { throw new NotImplemen ...
- Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)
原因是没有开启php的php_fileinfo扩展,开启即可. 找到php.ini文件,搜索到php_fileinfo,去掉前面的分号,然后重启服务器apache.nginx下同理. extensio ...
- pygame 浅解
import pygame from first_pygame.plane_spirit import * # 调用重载的精灵类 # 初始化 pygame.init() # 初始化所有所需游戏模块 s ...
- Android 开发 微信分享,登陆,获取信息
1 获取appid和appsecret. https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN ...