1.pytest 简介
- 安装pytest
- pytest官网
- 编写规则
- Console参数介绍
- 执行测试
pytest简介
- pytest 是一个非常成功的全功能的Python测试框架,
- 简单灵活,容易上手,文档丰富
- 支持参数化,可以细粒度地控制要测试的测试用例
- 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appium 等自动化测试、接口测试(pyest+requests)
- 测试用例的skip和xfail处理
- 可以很好的和CI 工具结合
pytest安装和官网
- 安装 pytest
- pip install pytest
- pytest官网
编写规则
- 测试文件以test开头(以test结尾也可以)
- 测试类以Test开头,并且不能带有init方法
- 测试函数以test开头
- 断言使用基本的assert即可
Console参数介绍
- -v 用于显示每个测试函数的执行结果
- -q 只显示整体测试结果
- -s 用于显示测试函数中print()函数输出
- -x , --exitfirst,在第一个错误或测试失败时立即退出
- -h 帮助
执行
- pycharm: tools-----> Python Integrated tools ----> Default test runner
- main 方法
- pytest.main(['-s','-v','test1.py'])
- 命令行
- pytest -s -v test1.py
pytest标记
- Pytest查找测试策略
- 默认情况下,Pytest会递归查找当前目录下所有以test开始或结尾的python脚本
- 并执行文件内的所有以test开始或结束的函数和方法
- 标记测试函数
- 显式指定函数名通过 ::
- 使用模糊匹配,使用 -k选项标记
- 使用pytest.mark在函数上标记
- 注册标签名,通过 .ini 配置文件格式如下:
[pytest]
markers =
do:do
undo:undo
- 在用例上打标签
pytest 参数化处理
- 在pytest中,也可以使用参数化测试,即每组参数都会独立执行一次测试
- 使用的工具就是pytest.mark.parametrize(argnames, argvalues)
- 数据格式
- 列表
- 元组
- 字典
- 增加可读性
- 参数化装饰器有一个额外的参数ids,可以标识每一个测试用例,自定义测试数据的显示,为了增加可读性
- 可以标记每一个测试用例使用的测试数据是什么,适当的增加一些说明
- 自定义id做标识
- 在参数列表旁边定义一个ID 值来做标识
pytest fixture
- 定义fixture 跟定义普通函数差不多,唯一的区别就是在函数上加个装饰器@pytest.fixture()
- 用例调用fixture 的返回值,直接就是把fixture 的函数名当做变量名称
pytest setup 和teardown
- 模块级(setup_moudel/teardown_moudel)开始于模块始末,全局的
- 函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
- 方法级(setup_method/teardown_method)开始于方法始末(在类中)
- 类里面的(setup/teardown)运行在调用方法前后