标题
python pytest 测试进阶
课程价值
- 理解 pytest 框架结构
- 掌握运行及常用的运行参数
- 掌握参数化与数据驱动
大纲
- pytest 介绍与安装
- pytest 运行
- pytest 框架结构
- pytest 参数化
时长
90分钟
PPT
https://pdf.ceshiren.com/xly3/python-pytest测试实战1
实战内容
参考资料
- pytest 官网:http://www.pytest.org/
pytest 安装
安装命令
pip install pytest
版本验证
pytest --version
pycharm 配置
- 进入 pycharm 设置
- 搜索 pytest
- 设置 test runner
- 删除 pycharm 运行记录
pytest 运行
pytest 规则
- 测试文件、测试函数、测试方法,名称需要以 test_ 开头
- 测试类名称需要 Test 开头
- 测试类中不能包含 init 方法
pycharm 中运行
- 运行整个测试文件:在文件上点击鼠标右键,选择 run
- 点击绿色小三角,运行对应的测试类或者测试方法
命令行运行
- 运行当前目录下所有测试文件:
pytest
- 运行指定的测试文件:
pytest 文件名
- 运行指定文件中的指定的类或者方法:
pytest 文件名::测试类名::测试方法名
- 查看执行过程中的详细信息和打印信息:
pytest -vs
- 只收集测试用例不运行:
pytest --collect-only
- 生成执行结果文件:
pytest --junitxml=./result.xml
pytest 框架结构
- 模块级(setup_module/teardown_module)模块始末,全局的(优先最高)
- 函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
- 类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
- 方法级(setup_method/teardown_methond)开始于方法始末(在类中)
- 类里面的(setup/teardown)运行在调用方法的前后
参数化
- 单个参数化:参数名称写在字符串中,参数值用列表传递
- 多个参数:参数名称写在字符串中,参数值用列表套列表或者元组的方式传递
- 测试用例起别名:ids=
- 笛卡尔积:用两个装饰器分别传入参数
- 从 yaml 中读取参数:数据读取成为参数化中需要的参数格式
课后作业
- 补全计算器中加法和除法的测试用例
- 使用参数化完成测试用例的自动生成
- 在调用测试方法之前打印【开始计算】,在调用测试方法之后打印【计算结束】
注意:
- 使用等价类,边界值,因果图等设计测试用例
- 测试用例中添加断言,验证结果
- 灵活使用 setup(), teardown() , setup_class(), teardown_class()