pytest框架-介绍、Mark(打标签)、命令运行用例、用例执行顺序、
1、pytest介绍:基于unittest 之上的单元测试框架
1.1、自动发现测试模块和测试用例;
unitest 需要添加用例,(泰斯特楼贷)加载器加载测试用例
pytest 只需要一条代码就可以
1.2、断言使用 assert + 表达;
unitest 定义了所有的 断言方式
pytest 只需要使用一个关键字 assert + 表达式 就可以了,表达式为真则断言通过,表达式为假则断言失败
1.3、pytest 可以设置测试会话级、模块级、类级、函数级的 fixtures;
1.4、有丰富的插件库,目前在600个以上(框架库插件地址:http://plugincompat.herokuapp.com/)
2、pytest 收集测试用例规则(按照:目录-文件-函数/类)
2.1、默认从当前目录中搜集测试用例,即在那个目录下运行pytest 命令,则从那个目录当中搜索
2.2、搜索规则:进入目录后,在按照搜索规则搜索用例
2.2.1、符合命名规则 test_*.py 或者 *_test.py 的文件
2.2.2、以 test_ 开头的函数名
2.3.3、以 Test 开头的测试类(没有 _init_ 函数)当中,以 test_ 开头的函数
3.执行方式
第一种:cmd 中执行 pytest 命令;先进入代码所在文件,然后执行 pytest 命令
========== testsession starts ========:代表会话开始
- python3.7:代表那个平台
- pytest-5.2.1 :代表pytest版本
- rootdir:代表搜索用例的地址
第二种:同第一种方法:在 pycharm 控制台的 Terminal 功能,执行 pytest 命令
命令:pytest pytest -h :控制台查看命令行参数 执行标签名 aaa 的测试用例
pytest -m 标签名 :通过命令行 -m 过滤用例运行
例如:pytest -m aaa pytest -m 标签名 -s -v :控制台搜索输出详情用例名,可以看到成功与失败提示
例如:pytest -m aaa-s -v
实例:
第三种:pytest 的 main 函数 (同前两种方法)
import pytest
if __name__ == '__main__':
pytest.main()
3、pytest - Mark(打标签是为了筛选测试用例:冒烟、回归)
3.1、注册标签名
3.1.1、注册方式:创建 pytest.ini 文件,在文件中按如下形式添加标签名
[pytest]
markers=
aaa:mao yan
bbb
ccc
ddd # 标签名冒号后面可以添加注释信息必须是英文
# 红色字段为固定模式,不能改变
3.1.2、在测试用例/ 测试类前面加上标签:@pytest.mark.已注册的标记名
import pytest # 单个标记
@pytest.mark.aaa
def test_aaa():
assert 100 == 100
3.1.3、可以在一个用例上打多个标签,多次使用:@pytest.mark.已注册的标记名
import pytest # 多个标记
@pytest.mark.aaa
@pytest.mark.ddd
def test_bbb():
assert 200 == 200
3.1.3、在给类打标签,类里面的函数打标签
# 给测试类打标签
@pytest.mark.ddd
class TestDemo:
@pytest.mark.bbb
def test_ccc(self):
assert 300 == 300 @pytest.mark.ccc
def test_ddd(self):
assert 400 == 400 def test_0_eee(self):
assert 500 == 500
3.2、方式二:
3.2.1、在测试类里,使用以下申明(测试类下,所有用例都被打上该标签)
class TestDemo:
# 单个标签
pytestmark = pytest.mark.已注册标签名
# 多个标签
pytestmark = [pytest.mark.标签1, pytest.mark.标签1]
3.2.2、在模块文件里(py文件下,所有测试函数和测试类里面的测试函数,都有会打上该标签)
import pytest
# 单个标签
pytestmark = pytest.mark.已注册标签名
# 多个标签
pytestmark = [pytest.mark.标签1, pytest.mark.标签1]
4、pytest用例执行顺序
4.1、文件名称 按 ASCII 码排序
4.2、文件内部按代码先后顺序排序
大佬文档:https://www.cnblogs.com/Simple-Small/p/11077123.html
*******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/,谢谢!!*******
pytest框架-介绍、Mark(打标签)、命令运行用例、用例执行顺序、的更多相关文章
- Pytest框架介绍
Pytest框架介绍.安装 pytest是python测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,功能更强大 pytest特征 1:断言提示信 ...
- Scrapy框架——介绍、安装、命令行创建,启动、项目目录结构介绍、Spiders文件夹详解(包括去重规则)、Selectors解析页面、Items、pipelines(自定义pipeline)、下载中间件(Downloader Middleware)、爬虫中间件、信号
一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...
- pytest框架之mark标签
对测试用例打标签,在运行测试用例的时候,可根据标签名来过滤要运行的用例. 一.注册标签名 1.创建pytest.ini文件,在文件中按如下方式添加标签名: [pytest] markers = smo ...
- pytest一:pytest 框架介绍
pytest 是 python 的一种单元测试框架,与python 自带的 unittest测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高.根据pytest 的官方网站介绍,它具 ...
- pytest框架之rerunfailures失败重运行机制
web自动化测试中,稳定性在整个测试运行中都至关重要,但不能保证测试脚本或者测试环境一直都能够稳定,它牵扯到诸多因素,在这里就不赘述,pytest框架相较于unittest的一大优势就在于拥有用例失败 ...
- 【pytest系列】- pytest测试框架介绍与运行
如果想从头学起pytest,可以去看看这个系列的文章! https://www.cnblogs.com/miki-peng/category/1960108.html 前言 目前有两种纯测试的测 ...
- pytest框架之命令行参数1
前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixtur ...
- 【pytest系列】- mark标记功能详细介绍
如果想从头学起pytest,可以去看看这个系列的文章! https://www.cnblogs.com/miki-peng/category/1960108.html mark标记 在实际工作中, ...
- 『德不孤』Pytest框架 — 1、Pytest测试框架介绍
目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...
随机推荐
- SWT图形用户界面之配置
1.在eclipse的plugins目录下找到org.eclipse.swt.win32.win32.x86_64_3.111.0.v20190605-1801.jar文件 其中3.111.0是ecl ...
- JQ实现全选、全不选
代码: <table class="table myTable table-hover"> <thead> <tr> <th> &l ...
- Caffe系列4——基于Caffe的MNIST数据集训练与测试(手把手教你使用Lenet识别手写字体)
基于Caffe的MNIST数据集训练与测试 原创:转载请注明https://www.cnblogs.com/xiaoboge/p/10688926.html 摘要 在前面的博文中,我详细介绍了Caf ...
- 对this的理解与总结
this既不指向函数自身,也不指向函数的词法作用域!它指向谁完全取决于它在哪里被调用,被谁调用! 绑定规则 总体来说,this的绑定规则有: 默认绑定(严格模式/非严格模式) 隐式绑定 显式绑定 ne ...
- Linux时间和时区设定
一.时区设定 由于安装系统时采用了UTC,那么什么是UTC呢,简单的说UTC就是0时区的时间,是国际标准,而中国处于UTC+8时区. 使用tzselect命令,过程如下: 可以看到此环境变量已设置,将 ...
- Mysql的数据列类型效率
1. 能短就不要长.(磁盘I/O少一些) 比如固定 长度的CHAR数据列,定义 CHAR(40),而不是 CHAR(255); 比如MEDIUMINT代替BIGINT,数据表就小一些, 值的处理 ...
- Django缓存机制以及使用redis缓存数据库
目录 Django 配置缓存机制 缓存系统工作原理 Django settings 中 默认cache 缓存配置 利用文件系统来缓存 使用Memcache来缓存: 使用Local-memory来缓存: ...
- WCF进阶:扩展bindingElementExtensions支持对称加密传输
前面两篇文章WCF进阶:将编码后的字节流压缩传输和WCF 进阶: 对称加密传输都是实现了自定义编码,那两个例子中托管服务或者客户端调用都采用的代码实现,WCF更友好的方式是在app.config或 ...
- 不同浏览器Cookie有效期问题
昨天项目迁移了测试服务器,之后奇怪的问题出现了. IE.谷歌无法登陆,火狐可以登陆. 这个项目先后部署过两个测试服务器.一台正式服务器,登陆都是正常的,这次却突然出现这种奇怪的问题,很是纠结. 通过查 ...
- Linux CentOS CapsLock 大小写反转问题 解决
虚拟机centos7,输入大小写字母反了,开启capslock的时候变成小写字母了,关闭则变成大写了... 只需要执行 setleds +caps 或 setleds -caps 即可,如图: