当前位置:网站首页>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.安装依赖
边栏推荐
猜你喜欢
随机推荐
软件技术功能开发思路
js通过两种方式进行对商品价格排序
一文搞懂│php 中的 DI 依赖注入
链表| leecode刷题笔记
JZ11 旋转数组的最小数字
分类实验报告作业
dogs vs cats 二分类问题vgg16迁移学习
品牌方发行NFT时,应如何考量实用性?
DSP-ADAU1452输入通道配置
exness:欧元区经济意外向好,欧元震荡蓄势等待突破
关于我用iVX沉浸式体验了一把0代码项目创建
Qt reads Json files (including source code + comments)
【面经】被虐了之后,我翻烂了equals源码,总结如下
研发了 5 年的时序数据库,到底要解决什么问题?
Arduino 硬件编程语言基础学习入门
解析并执行 shell 命令
JZ69 跳台阶
锁定和并发控制(一)
“行泊一体”的火爆与现实困境
JZ4 二维数组中的查找