做网站怎么这么贵,淘客怎么样做网站,asp网站上传后台在哪,交互效果很好的网站Pytest 框架常用功能介绍
一、简介
Pytest 是一个功能强大的 Python 测试框架#xff0c;具有简单易用、测试用例清晰易读、支持参数化、可运行由 Nose 和 unittest 编写的测试用例、拥有丰富的第三方插件且可自定义扩展、支持重复执行失败的用例以及方便与持续集成工具集成…Pytest 框架常用功能介绍
一、简介
Pytest 是一个功能强大的 Python 测试框架具有简单易用、测试用例清晰易读、支持参数化、可运行由 Nose 和 unittest 编写的测试用例、拥有丰富的第三方插件且可自定义扩展、支持重复执行失败的用例以及方便与持续集成工具集成等特点。
二、快速入门
安装使用 pip3 install pytest 命令进行安装。查看版本通过 Pytest --version 查看版本。快速入门示例 导入 pytest。定义测试用例方法和测试函数使用 assert 进行断言。通过 pytest.main([-s, test_sample.py]) 执行测试。
三、基础使用
用例前置和后置执行 unittest通过 setUp 和 tearDown 在每个用例执行前后执行通过 setUpClass 和 tearDownClass 在类里面所有用例执行前后执行。pytest函数级别为 setup/teardown运行于测试方法的始末每个测试用例运行一次类级别为 setup_class/teardown_class运行于测试类的始末一个测试内只运行一次。 默认运行规则 测试文件以 test_*.py 开头或 *_test.py 结尾。测试类以 Test 开头且不能带有 __init__ 方法。测试函数以 test_ 开头。运行参数 -v用于显示每个测试函数的执行结果。-q只显示整体测试结果。-s用于显示测试函数中 print() 函数输出。 自定义运行规则 在 pytest.ini 文件中配置如 addopts运行参数、testpaths测试目录、python_files测试文件、python_classes测试类、python_functions测试方法等。 断言 使用标准的 Python assert 断言语句如 assert xx判断 xx 为真、assert not xx判断 xx 不为真、assert a in b判断 b 包含 a、assert a b判断 a 等于 b、assert a! b判断 a 不等于 b。
四、标记mark使用
标记 一个测试函数可以有多个标记一个标记也可以标记多个测试函数。运行参数pytest -m test01 或 pytest -m test01 or test02。 跳过测试 skip标记 skip 表示跳过该测试用例运行不执行可使用 skip(reasonNone)。skipif条件判断验证是否忽略不执行判断条件为表达式 skipif(condition, reasonNone)。
五、数据参数化
传入单个参数pytest.mark.parametrize(argnames, argvalues)argnames 为参数名argvalues 为参数对应值类型必须为可迭代类型一般使用 list。传入多个参数pytest.mark.parametrize((username, password), [(xiaoming, 123456), (xiaohong, 456789)])list 的每个元素都是一个元组元组里的每个元素和按参数顺序一一对应。
六、常用插件
pytest-html用于生成测试报告安装命令为 pip3 install pytest-html在配置文件中的命令行参数中增加 --html用户路径/report.html。pytest-rerunfailures当失败后尝试再次运行安装命令为 pip3 install pytest-rerunfailures在配置文件中的命令行参数中增加 --reruns n如果期望加上出错重试的等待时间可使用 --reruns-delay。
七、Fixture
作用setup、teardown 针对整个脚本全局生效而 fixture 可以让我们自定义测试用例的前置条件。优势 命名方式灵活不局限于 setup 和 teardown。在 conftest.py 配置里可以实现数据共享不需要 import 就能自动找到 fixture。scopesession 可实现多个 .py 跨文件使用一个 session 来完成多个用例。 如何使用 将 fixture 名称作为测试用例函数的输入参数pytest.fixture。测试用例加上装饰器pytest.mark.usefixtures(fixture_name)。fixture 设置pytest.fixture(autouseTrue)。 scopefixture 的作用域默认为 function函数级别排序为session module class function。autouse默认 False手动调用该 fixture如果是 True所有作用域内的测试用例都会自动调用该 fixture。name默认装饰器的名称。实例化顺序 function函数级每一个函数都会调用。class类级别每个测试类只运行一次。module模块级每一个 .py 文件调用一次。session会话级每次会话只需要运行一次会话内所有方法及类模块都共享这个方法是针对 .py 级别。