[12期 python] python pytest 实战2

两点小建议:

  1. 一定要学会使用百度, google, bing.cn, 解决你80%的问题,这些都解决不了
  2. 一定要发贴,作笔记。尽量不要在群里问,可以交流

pytest 运行

  • pytest 运行规则
    pytest ,收集所有以test_*.py 文件 ,Test开头的类,和以test_开头的函数或者方法。都能识别成测试用例。

  • 常用参数
    – help 查看所有的参数
    -k 满足表达式的都会执行
    –collect-only 只负责收集测试用例,而不执行
    -m 加标签 ,执行需要加个 -m参数, 为用例加@pytest.mark.标签名
    –junit-xml 生成一个执行结果的xml文件

[pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg file found:
>....
  • conftest.py 文件
    可以共享数据 ,方法, fixture方法放置 在这个文件下,fixture方法需要传入方法里执行, 除非使用autoUse = True。
    改写方法,改写执行顺序
    改写方法,自动的添加标签
def pytest_collection_modifyitems(session, config, items:list):
    # print(items)
    # print(type(items))
    # for item in items:
    #     if 'add' in item.nodeid:
    #         item.add_marker(pytest.mark.add)
    #
    #     elif 'div' in item.nodeid:
    #         item.add_marker(pytest.mark.div)

    items.reverse()

  • pytest.ini 配置文件
    可以改变pytest 运行的行为
[pytest]
addopts = -vs --alluredir ./report
python_files = 'abc_*.py'
python_classes = 'Login*'
python_functions = 'case*'

导出依赖包:

$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt

数据驱动

测试数据的数据驱动

测试步骤的数据驱动

课间练习

使用测试数据的数据驱动(参数化)完成加法和除法
修改运算规则 , pytest.ini 文件(只识别add_ div_开头的方法)
自动添加mark 标签, 只运行 add 开头的方法

pytest fixture 高级用法

  • yield 生成器 ,相当于 return + 暂停+ 记录上一次的运行位置 , 与fixture 结合使用,激活yield后面的操作。
  • 执行顺序 session > module > function ,如果有autouse=True ,级别大于同等级
  • 工厂模式
  • 反射

Allure

  • 安装 allure
  • allure-pytest python 第三方库 (不安装无法识别 --alluredir命令)
    allure52以上版本需要jdk1.8版本

  • 生成 json
    pytest --alluredir ./report

  • 生成html报告
    allure generate ./

  • 打开 html报告
    不能直接双击index.html,需要使用命令 allure open 报告目录/

  • 使用 allure 提供的一些 API
    添加操作步骤说明, 插入图片,插入视频 ,添加 case 链接,添加bug链接,定义stories, fixture,

课后作业:

关闭