【课程贴】python pytest 测试实战(二)

课后调查表

参考链接

hook函数:https://docs.pytest.org/en/latest/_modules/_pytest/hookspec.html

conftest.py

  • 完成数据共享
  • 不同目录可以创建自己的conftest.py文件
  • 作用域:对当前同级目录下所有的文件及包下的所有测试文件,测试方法生效,如果同级目录下没有conftest.py,会找上级目录或者上上级目录 的conftest.py里的fixture方法。

pytest 常用插件

pip install pytest-ordering 控制用例的执行顺序
pip install pytest-dependency 控制用例的依赖关系
pip install pytest-xdist 分布式并发执行测试用例
pip install pytest-rerunfailures 失败重跑
pip install pytest-assume 多重较验
pip intall pytest-html 测试报告

设计测试用例的原则

  • 不建议测试用例设计顺序
  • 让测试用例尽量的简单,

pytest.ini

  • 定义测试用例的编写规则,
  • 要放在 执行命令的同级目录,通过 建议放在项目的根目录,执行的时候也要在项目的根目录下执行。
[pytest]
markers = add
          div
python_files= check_*  test_*
python_classes = Check_* Test_*
python_functions = aaa_* test_*
addopts=-vs --alluredir=./result
norecursedirs = result logs datas test_demo*   运行时忽略某些文件夹

失败重跑

--lf, --last-failed 只重新运行上次运行失败的用例(或如果没有失败的话会全部跑)
--ff, --failed-first 运行所有测试,但首先运行上次运行失败的测试(这可能会重新测试,从而导致重复的fixture setup/teardown)

测试数据与测试步骤的数据驱动

hook函数

pytest_collection_modifyitems 收集上来的测试用例实现定制化功能

  • 解决问题:
    • 自定义用例的执行顺序
    • 解决编码问题 (中文的测试用例名称)
    • 自动添加标签
含有中文的测试用例名称,改写编码格式:
item.name = item.name.encode('utf-8').decode('unicode-escape')
item._nodeid = item.nodeid.encode('utf-8').decode('unicode-escape')

pytest_addoption 自定义命令行参数

parser: 用户命令行参数与ini文件值的解析器
def pytest_addoption(parser):
    mygroup = parser.getgroup("hogwarts")     #group 将下面所有的 option都展示在这个group下。
    mygroup.addoption("--env",    #注册一个命令行选项
                      default='test',
                      dest='env',
                      help='set your run env'
                      )
@pytest.fixture(scope='session')
def cmdoption(request):
    return request.config.getoption("--env", default='test')

pytest_generate_tests

Allure生成测试报告

安装

  • allure
  • allure-pytest

Allure2 解析过程:

    1. 安装 allure2
    1. Allure help 帮助文档
    1. 生成 allure 测试结果 :pytest —alluredir=./report/
    1. 展示报告:allure serve ./report
    1. 生成最终版本的报告: allure generate ./report
    1. 打开报告 :allure open -h 127.0.0.1 -p 8883 ./report/

在本地搭建一个网站服务(例如:Django)

PPT

课后作业

1 Like

原来学过pytest ,预习的课程比较多,现在听起来还是有些吃力。 想给老师提两点建议

  1. 由于没有ppt下发,直播视频时间太长,建议把课程大纲和子节点知识列到课程贴,因为遇到一个知识点不记得了要回看时要找比较久

2.代码文件比较多是否可以按每次讲的模块内容归类一下。对应去看代码时就能快速定位到了

5 Likes

采纳建议:
1、PPT 已上传到课程贴
2、后续代码 会分阶段上传

建议:
自己也可以总结一些课程上的重点,做一些课程笔记和总结 ,这样才能进步的更快~

关闭