Pytest项目_day11(fixture、conftest)

发布于:2025-08-12 ⋅ 阅读:(22) ⋅ 点赞:(0)

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的返回值传给该同名形参,因此我们可以在后续代码中直接使用
    在这里插入图片描述