python ----> pytest 测试框架

pytest

  • 介绍
  • 测试用例的识别
  • 安装
  • 执行
  • 框架结构
  • 参数化
  • 数据驱动
  • fixture()
  • pytest 插件
  • conftest
  • Allure测试报告
  • 捕获异常

介绍

pytest 是一个非常成熟的全功能的Python测试框架

  • 简单灵活,容易上手
  • 支持参数化
  • 测试用例的skip和xfail,自动失败重试等处理
  • 支持简单的单元测试和复杂的功能测试,支持selenium / appium 等自动化测试,接口测试(pytest+requests)
  • pytest具有很多第三方插件,可以自定义扩展,如pytest-allure(测试报告),pytest-xdist(多CPU分发)等
  • 很好的与 Jenkins集成

参考:官方文档 https://docs.pytest.org/en/6.2.x/
第三方库:https://pypi.org/search/?q=pytest



测试用例的识别

  • 测试文件
    1. test_*.py
    2. *_test.py
  • 测试用例
    • Test*类中包含的所有test_*方法 (测试类不能有__init__方法)
    • 不在Test*类中的所有test_*方法

  • 也可执行unittest框架写的用例和方法


安装

pip install pytest
升级: pip install -U pytest
查看版本号:pytest --version


执行

pytest: 执行当前目录下所有测试文件中的测试用例
pytest test_*.py:执行指定文件中的测试用例

命令行参数 说明 举例
-h 查看pytest所有选项 pytest -h
-p 减少冗长 pytest test_*.py -p
-v 带控制台输出结果,日志 pytest test_*.py -v
-s 输出打印的信息 pytest test_*.py -s
:: 执行指定的模块,类或方法 pytest 文件名.py::类名::方法名
-x 一旦运行到报错,就停止执行 pytest test_*.py -x
–maxfail= 允许失败的用例达到num次才停止执行 pytest test_*.py --maxfail=2
-k 执行含有某个关键字的方法 pytest test_*.py -k “case1”
-m [标记名] 运行有这个标记的用例 @pytest.mark.login , pytest -m “login”

-vs 可查看详细的输出信息加打印日志
可执行参数查看:命令行输入:pytest --help



框架结构

级别 说明
setup_module / teardown_module 在模块的始末执行(优先级最高)
setup_class / teardown_class 在类中前后只执行一次
setup / teardown 运行在调用方法的前后



参数化

@pytest.mark.parametrize(argnames, argvalues)
argnames的类型可以是 string,list,tuple

@pytest.mark.parametrize('a,b', [(1,1),('a','b')])
def test_param(self,a,b):
	assert a == b

你可能感兴趣的:(测试框架,Python,系列,python,软件测试)