Python测试框架pytest介绍用法

1、介绍

pytest是python的一种单元测试框架,同自带的unittest测试框架类似,相比于unittest框架使用起来更简洁、效率更高

pip install -U pytest

特点:

1.非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考

2.支持简单的单元测试和复杂的功能测试

3.支持参数化

4.执行测试过程中可以将某些测试跳过,或者对某些预期失败的Case标记成失败

5.支持重复执行失败的Case

6.支持运行由Nose,Unittest编写的测试Case

7.具有很多第三方插件,并且可以自定义扩展

8.方便的和持续集成工具集成

2、入门案例

python 复制代码
import pytest


def test_a():
    print("test_a")
    return 1 * 0


def test_b():
    print("test_b")
    return 1 / 0


if __name__ == '__main__':
    pytest.main(["-s"])

3、配置文件

默认规则:

模块名称为 test_*.py*_test.py

类名称为Test开头

配置文件:pytest.ini

python 复制代码
[pytest]
addopts = -s   # 通常是- 或者 -- 开头内容
testpaths = ./  # 测试模块所在目录
python_files = test_*.py *test.py   # 测试模块文件名称规则,多个内容用空格分隔
python_classes = Tedt_*  # 测试类名称规则
python_functions = test_* # 测试类函数或者方法的名称规则

4、标记跳过测试

无条件跳过:

python 复制代码
@pytest.mark.skip(reason="我想跳过")
def test_b():
    print("test_b")
    return 1 / 0

@pytest.mark.xfail(raises=ZeroDivisionError)
def test_c():
    print("test_b")
    return 1 / 0

有条件跳过:

python 复制代码
@pytest.mark.skipif(2>10,reason="条件成立跳过)
def test_c():
    print("test_c")

5、参数化

对于相似的过程,但数据不一样的时候,可以使用参数化

复制代码
parameterize(self.argnames, argvalues, ids=None):
- argnames 参数名称 列表或者元组
- argvalues 参数值 列表套元组
- ids 测试id,可省略

例子:

python 复制代码
@pytest.mark.parametrize(["a", "b"], [(1, 2), (3, 4)])
def test_a(a, b):
    print("test_a++++++++++++++")
    assert a + b < 100

6、夹具(前后固件)

在测试之前和之后执行,用于固定测试环境,及清理回收测试资源

python 复制代码
# 方法夹具
def setup_method(self):
    print("方法用例执行之前,需要的操作:热身")

def teardown_method(self):
    print("方法用例执行之前,需要的而操作:拉伸")

# 类夹具
def setup_class(self):
    pass

def teardown_class(self):
    pass

# 函数夹具
def teardown_function():
    print("函数执行之前:拉伸")
    
def setup_function():
    print("函数执行之前:热身")
    
# 摸块夹具
def teardown_module():
    print("函数执行之前:拉伸")
    
def setup_module():
    print("函数执行之前:热身")

7、插件

生成测试报告

安装: pip install pytest-html

使用:

1、命令行方式:pytest --html=存储路径/report.html

2、配置文件方式:

python 复制代码
[pytest]
addopts = -s --html=./report.html

多线程运行:pytest-xdist

控制用例的执行顺序:pytest-ordeing

失败用例重跑:pytest-returnfailures

生成企业级专业版的测试报告:allure-pytest

测试框架本身:pytest

管理基础路径:pytest-base-url

相关推荐
xixixin_9 分钟前
【JavaScript 】从 || 到??:JavaScript 空值处理的最佳实践升级
开发语言·javascript·ecmascript
玩大数据的龙威12 分钟前
农经权二轮延包—各种地块示意图
python·arcgis
ZH154558913114 分钟前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
belldeep23 分钟前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
喵手24 分钟前
Python爬虫实战:电商价格监控系统 - 从定时任务到历史趋势分析的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·电商价格监控系统·从定时任务到历史趋势分析·采集结果sqlite存储
m0_7369191025 分钟前
C++中的委托构造函数
开发语言·c++·算法
喵手36 分钟前
Python爬虫实战:京东/淘宝搜索多页爬虫实战 - 从反爬对抗到数据入库的完整工程化方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·京东淘宝页面数据采集·反爬对抗到数据入库·采集结果csv导出
lsx20240639 分钟前
Python3 SMTP发送邮件教程
开发语言
懈尘40 分钟前
从 Java 1.7 到 Java 21:逐版本深入解析新特性与平台演进
java·开发语言
凉辰43 分钟前
使用uni.createInnerAudioContext()播放指定音频(踩坑分享功能)
开发语言·javascript·音视频