【Python自动化训练营3期】python pytest 测试实战1

标题

python pytest 测试实战1

课程价值

  • 理解 pytest 框架结构
  • 掌握运行及常用的运行参数
  • 掌握参数化与数据驱动

大纲

  • pytest 介绍与安装
  • pytest 运行
  • pytest 框架结构
  • pytest 参数化

时长

90分钟

PPT

https://pdf.ceshiren.com/xly3/python-pytest测试实战1

实战内容

参考资料

pytest 安装

安装命令

pip install pytest

版本验证

pytest --version

pycharm 配置

  1. 进入 pycharm 设置
  2. 搜索 pytest
  3. 设置 test runner
  4. 删除 pycharm 运行记录

pytest 运行

pytest 规则

  • 测试文件、测试函数、测试方法,名称需要以 test_ 开头
  • 测试类名称需要 Test 开头
  • 测试类中不能包含 init 方法

pycharm 中运行

  1. 运行整个测试文件:在文件上点击鼠标右键,选择 run
  2. 点击绿色小三角,运行对应的测试类或者测试方法

命令行运行

  • 运行当前目录下所有测试文件: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 中读取参数:数据读取成为参数化中需要的参数格式

课后作业

  1. 补全计算器中加法和除法的测试用例
  2. 使用参数化完成测试用例的自动生成
  3. 在调用测试方法之前打印【开始计算】,在调用测试方法之后打印【计算结束】

注意:

  • 使用等价类,边界值,因果图等设计测试用例
  • 测试用例中添加断言,验证结果
  • 灵活使用 setup(), teardown() , setup_class(), teardown_class()

课堂代码

https://github.com/ceshiren/HogwartsFIS03

课后调查表

https://github.com/Liuhui0816/HogwartsTesting/tree/master/pytest_practice/calc
pytest 作业1-计算器

https://github.com/Leesin-one/TestPro

https://github.com/jennymyy86/Python-practice-task/commit/a220f7673fa3204235a01b7b299b9deb28cd6237

1 Like

https://github.com/huangruivip/test/tree/master/test_method

pytest_homework_01 · chenweizhong-beep/pytest@6e353e2 (github.com)

https://github.com/xiehuixin/pythonProject/tree/master/testing

1 Like

https://github.com/ZJC97-zjc/hogwarts--01

https://github.com/wudi02/HogwartsFIS03

https://github.com/kopgittowin/testpro/tree/master/testing

yaml 数据中加法和除法应该处于同一级
除法中0的处理逻辑不完善,可以通过异常处理来解决

完成的很好
除法中可以加上除数为0的逻辑处理,可以用捕获异常的方式

完成的很好
数据中除法的数据和加法的可以放到同一级

完成的很好

完成的很好
image

除法测试用例中 assert 的位置不对

两个测试方法写在同一个测试类中即可
除法中需要考虑除数为0的情况,而且也可以把ids数据写入 yaml

https://github.com/yearsToday/PYTEST_TASK1.git

完成的很好
按照yaml中的数据结构设置,其实数据写在一个文件中就可以,只做一次文件内容读取,然后分别取出不同测试用例中的数据

https://github.com/Zero-Fire/Howgwarts03/tree/master/testing