Pytest项目_day11(fixture、conftest)

Fixture

  • fixture是一种类似于setup、teardown,用于测试前后进行预备、清理工作的代码处理机制
    • 相比于setup、teardown来说,fixture命名更灵活,局限性更少
    • 使用conftest.py配置里面可以实现数据共享,不需要import就能自动找到一些配置

使用范围

function范围

  • 我们首先需要在一个自定义方法前写上fixture的注解
    • 如果不写范围,则该fixture默认为function范围
    • 我们需要在要求调用该fixture的方法的形参处,写上自定义方法名
  • 我们也可以使用autouse=True来让该文件内的每一个函数都自动调用fixture,同时避免我们手动写自定义方法名

class范围

  • 我们首先需要在一个自定义方法前写上fixture的注解,并且将范围设置为class
    • 当我们在该文件内不设置class类时,如果将autoclass设置为True,那么pytest会将每一个方法都视为一个类,每一个方法都会调用该fixture
    • 当我们将这些方法都放进一个类时,那么只有类最开始会调用一次fixture
    • 如果该文件内有很多个类,我们只想让其中的某一个类调用fixture,那么只需要将autouse设为False,并且在某一个类中的某一个方法的形参上加上该fixture即可

module范围

  • 我们首先需要在一个自定义方法前写上fixture的注解,并且将范围设置为module
    • 如果我们将autouse设为false,并且在多个方法和类中加上该fixture,那么整个py文件也只会调用一次fixture,且是在第一次加上该fixture的位置处调用
    • 如果我们将autouse设为True,那么只会在整个py文件的最开始调用一次fixture

session范围

  • 我们首先需要在对应目录下创建一个新文件方法前写上fixture的注解,并且将范围设置为session
    • 然后我们可以在控制台用pytest来运行该目录,可以看到对于一次运行多个文件,fixture也只调用了一次,且是在最开始调用的

conftest.py

  • 我们可以将fixture的定义放在conftest.py方法内部,统一管理

  • conftest.py为固定格式,不可以修改名字

  • 使用conftest.py文件中的方法时,无需导入,直接在方法的参数处引入形参即可

  • conftest.py仅作用于当前所处文件夹和下属文件夹

  • 如果在conftest.py中,范围为function的fixture,设置autouse为True,那么当前所处文件夹和下属文件夹的所有测试用例都会自动调用该fixture

    • 一个测试用例可以接收多个fixture

fixture通过return返回数据

  • 我们可以在fixture中使用return来返回数据,供其他测试用例调用
  • 在测试用例中,我们将fixture方法名作为实参传入后,pytest会自动将该fixture的返回值传给该同名形参,因此我们可以在后续代码中直接使用
相关推荐
我一定会有钱1 天前
pytest基础
python·测试工具·测试用例·pytest
西游音月1 天前
(6)pytest+Selenium自动化测试-测试用例编写
selenium·测试用例·pytest
兴趣使然黄小黄3 天前
【Pytest】Pytest框架快速入门
python·pytest
m0_632482504 天前
Jenkins + Pytest +allure接口自动化测试配置与操作
jenkins·集成测试·pytest·jenkins配置
李星星BruceL4 天前
Pytest第三章(参考指南1)
python·自动化·pytest
哎呀呦呵4 天前
pytest基本使用
python·pytest
Kristen_YXQDN4 天前
PyCharm 中 pytest 运行 python 测试文件报错:D:\Python_file\.venv\Scripts\python.exe: No module named pytest
运维·开发语言·python·pycharm·pytest
Low--Key4 天前
pytest框架快速入门
python·自动化·pytest
姜西西_4 天前
自动化测试框架pytest之fixture
android·java·pytest
测试开发Kevin4 天前
超级实用!汇总pytest中那些常用的参数
单元测试·pytest