pytest框架
一、pytest默认测试用例规则
- 模块名必须以test_或_test结尾
- 类名必须以Test开头
- 测试用例名必须以test_开头
二、pytest和unittest
pytest和unittest都是自动化框架,与selenium、requests、appium结合分别实现web自动化,接口自动化,APP自动化,主要执行如下操作
- 发现用例
- 执行用例
- 判断结果
- 生成报告
具有非常强大的插件
- pytest #本身
- pytest-html #生成html报告
- pytest-xdist #多线程执行用例
- pytest-ordering #控制测试用例的执行顺序
- pytest-rerunfailures #失败用例重跑
- allure-pytest #生成美观的Allure报告
批量执行插件:将插件放在txt文件下,如上(建议不要有中文),在控制台Terminal执行pip install -r requirement.txt
三、pytest运行方式
- 通过main方式运行
import pytest
if __name__ == '__main__':
pytest.main()
- 通过命令行运行
pytest
参数:
-vs -v输出详细信息,-s输出调试信息
-n 多线程执行
--reruns 失败用例重跑
--html 生成HTML测试报告
- 通过pytest.ini文件执行
不管是主函数运行还是命令行运行,都是通过pytest.ini全局配置文件执行,文件配置如下
[pytest]
addopts=-vs -m smoke #smoke是冒烟测试,在需要冒烟测试的函数上方增加装饰器@pytest.mark.smoke,smoke是标签名称,可以用多个标签,addopts=-vs -m "smoke or mm",
testpaths=./testcase #测试用例的路径,只执行这个目录下的用例
python_files=test_*py
python_classes=Test*
python_functions=test*
markers=
四、pytest前后置
第一种:
def setup_class(self):
print("类之前执行的操作")
def teardown_class(self):
print("类之后执行的操作")
def setup(self):
print("用例之前执行的操作")
def teardown(self):
print("用例之后执行的操作")
第二种
fixture(实现指定用例执行前后置),完全可以替换上面的方法
装饰器
@pytest.fixture(scope="作用域",params="参数化",autouse="自动执行",ids="参数名别名",name="fixture别名")
scope:
function 用例
class 类
module 模块
package/session 会话级别
五、接口关联封装
- 中间变量统一管理
- 查看中间变量的值
端到端

浙公网安备 33010602011771号