当前位置:网站首页>Pytest学习笔记
Pytest学习笔记
2022-08-02 16:29:00 【RalohaD】
建议有unittest基础后再学习pytest
一.用例规范
pytest默认的用例规范:
1.用例文件:以test开头
2.以test开头的函数会被当成一条测试用例
3.以Test类开头的类会被当成测试用例类
测试类中,以test开头的方法会被当成一条测试用例
例:
def test_login():
assert 99 == 99
class TestLogin01:
def test_01(self):
assert 99 == 99
但是pytest的用例规范可以通过pytest.ini去配置
pytest.ini文件
[pytest]
python_files = test*.py
python_functions =
test*
*test
python_classes =
Test*
Check*
这里就配置了:
1.以test开头的文件是测试文件
2.函数名以test开头或test结尾的函数会被当成一条测试用例
3.以Test开头或者以Check开头的类会被当成测试类
二.测试类的前置后置
pytest的前置和后置有两种方法
第一种:
用例级别的 setup 和 teardown
def setup(self):
print('用例前置')
def teardown(self):
print('用例后置')
类级别的 setup_class 和 teardown_class
def setup_class(self):
print('类前置')
def teardown_class(self):
print('类后置')
第二种:
pytest很经典的测试夹具–pytest.fixture
@pytest.fixture()
def fix_01():
print('用例级别前置')
yield
print('用例级别后置')
@pytest.fixture(scope='class')
def fix_02():
print('类级别前置')
yield
print('类级别后置')
@pytest.fixture(autouse=True)
def fix_03():
print("自动执行的用例级别前置")
yield
print("自动执行的用例级别后置")
调用时,在用例的参数中,写上前后置的方法名
def test_04(self, fix_01):
print('用例1')
assert 99 == 99
pytest中可以将所有前后置方法放到conftest.py文件中(在用例文件中直接使用,不用导入)
三.pytest用例执行顺序
同一个文件按照用例文件中代码的前后顺序
多个文件根据文件名的ASCII码排序
四.用例打标签
pytest.mark
1.在pytest.ini文件中markers这个配置项中注册标签
2.通过@pytest.mark.标签名,给用例加上标签
import pytest
class TestLogin:
@pytest.mark.opo
def test_01(self):
assert 100 == 100
def test_02(self):
assert 10 == 100
3.执行用例的时候可以通过pytest -m 标签名 去筛选用例执行
4.筛选用例的时候,可以使用 and or not
pytest -m"a and b":执行同时有a和b标签的用例
pytest -m"a or b":执行有a或者b标签的用例
pytest -m"not a":执行没有a标签的用例
5.跳过
@pytest.mark.skip 直接跳过
@pytest.mark.skipif (表达式) 通过条件来跳过
五.用例运行的方式
命令行:pytest 参数
pytest.main运行:pytest.main([‘参数列表’])
筛选执行的用例文件 或者 测试类 或者 用例方法
1.执行测试文件:pytest 文件名.py
2.执行测试类:pytest 文件名.py::类名
3.执行测试方法:pytest 文件名.py::类名::用例方法名

只执行test_Demo1的话
命令行进入test_Case目录,输入pytest test_Demo1.py
就可以只执行test_Demo1文件了
只执行test_Demo1中的TestLogin方法的话,就输入pytest test_Demo1.py::TestLogin
六.断言
unittest中内置的很多断言的方法
pytest中断言直接使用assert关键字
七.参数化
参数化就是unittest中ddt
import pytest
class Test99:
cases = [11, 2, 23, 456, 7, 5, 44, 66, 77, 88, 99]
@pytest.mark.parametrize('item', cases)
def test_999(self, item):
assert item > 30
八.测试报告
allure报告
具体安装步骤:
1.在https://github.com/allure-framework/allure2/releases下载allure进行解压
2.将解压后的bin路径放在系统变量path中
3.安装依赖
边栏推荐
猜你喜欢

【2022河南萌新联赛第(四)场:郑州轻工业大学】【部分思路题解+代码解析】

【面经】被虐了之后,我翻烂了equals源码,总结如下

制胜精细化运营时代 华为应用市场打出内容、场景、商业运营组合拳

julia系列5:文本、图像、其他语言函数互动

记一次内部分享——瞎扯淡

20 Lectures on Disassembly of Multi-merchant Mall System Functions-Platform Distribution Overview

小心 transmittable-thread-local 的这个坑
![【[SCOI2005] 互不侵犯】【状压DP(含概念讲解)】](/img/93/667e81afeb99b1cce4eb8068e6ce14.png)
【[SCOI2005] 互不侵犯】【状压DP(含概念讲解)】

技术分享| 融合调度系统中的电子围栏功能说明

尚硅谷尚品项目汇笔记(二)
随机推荐
Redis进阶之路:深度解析Redis单线程架构,图文并茂不能再清晰了
互联网刚需岗位 前景一片大好?
Number 类及各子类所占字节数源码分析
NC52 有效括号序列
Detailed explanation of the principle of JWT_The principle of electromagnetic induction
julia系列6:并行计算
#yyds干货盘点# 面试必刷TOP101: 删除链表的倒数第n个节点
【二】TS基本类型
在idea中创建web项目_idea部署web项目
mysql 《一》触发器
怒写400篇AI文章!这群妹子卷疯了…
亏损扩大/毛利偏低,北斗智联与「智能座舱第一阵营」的不等号
分类实验报告作业
DevOps开发工具对比
CWE4.8:2022年危害最大的25种软件安全问题
锁定和并发控制(一)
jar包应用的简单启停脚本
尚硅谷尚品项目汇笔记(三)
金仓数据库KingbaseES安全指南--6.12. BSD身份验证
基于深度学习的机器人目标识别和跟踪