Python测试框架pytest介绍用法
1、介绍
pytestpython的一种单元测试框架,同自带的unittest测试框架类似,相比于unittest框架使用起来更简洁、效率更高
pip install -U pytest
特点:
1.非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
2.支持简单的单元测试和复杂的功能测试
3.支持参数化
4.执行测试过程中可以将某些测试跳过,或者对某些预期失败的Case标记成失败
5.支持重复执行失败的Case
6.支持运行由Nose,Unittest编写的测试Case
7.具有很多第三方插件,并且可以自定义扩展
8.方便的和持续集成工具集成
2、入门案例
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
[pytest] addopts = -s # 通常是- 或者 -- 开头内容 testpaths = ./ # 测试模块所在目录 python_files = test_*.py *test.py # 测试模块文件名称规则,多个内容用空格分隔 python_classes = Tedt_* # 测试类名称规则 python_functions = test_* # 测试类函数或者方法的名称规则
4、标记跳过测试
无条件跳过:
@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
有条件跳过:
@pytest.mark.skipif(2>10,reason="条件成立跳过) def test_c(): print("test_c")
5、参数化
对于相似的过程,但数据不一样的时候,可以使用参数化
parameterize(self.argnames, argvalues, ids=None): - argnames 参数名称 列表或者元组 - argvalues 参数值 列表套元组 - ids 测试id,可省略
例子:
@pytest.mark.parametrize(["a", "b"], [(1, 2), (3, 4)]) def test_a(a, b): print("test_a++++++++++++++") assert a + b6、夹具(前后固件)
在测试之前和之后执行,用于固定测试环境,及清理回收测试资源
# 方法夹具 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、配置文件方式:
[pytest] addopts = -s --html=./report.html多线程运行:pytest-xdist
控制用例的执行顺序:pytest-ordeing
失败用例重跑:pytest-returnfailures
生成企业级专业版的测试报告:allure-pytest
测试框架本身:pytest
管理基础路径:pytest-base-url
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理!
部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!