Pytest fixture 的四种作用域:session、module、class 和 function

当使用 Pytest 测试框架时,fixture 可以具有不同的作用域,以控制其生命周期和共享范围。Pytest 支持四种不同的 fixture 作用域:session、module、class 和 function。

  1. session 作用域(Session Scope):

    • session 作用域是最宽泛的作用域,它在整个测试会话期间只执行一次。
    • 当测试集合中的多个测试模块需要共享相同的资源时,可以使用 session 作用域的 fixture。
    • 可以在 conftest.py 文件中定义 session 作用域的 fixture,并将其在多个测试模块中使用。
  2. module 作用域(Module Scope):

    • module 作用域表示 fixture 在单个测试模块中的生命周期,即在模块开始执行前创建,执行完毕后销毁。
    • 当测试模块中的多个测试函数需要共享相同的资源时,可以使用 module 作用域的 fixture。
    • 可以在测试模块中定义 module 作用域的 fixture。
  3. class 作用域(Class Scope):

    • class 作用域表示 fixture 在测试类中的生命周期,即在测试类实例化前创建,测试类销毁后销毁。
    • 当测试类中的多个测试方法需要共享相同的资源时,可以使用 class 作用域的 fixture。
    • 可以在测试类中定义 class 作用域的 fixture。
  4. function 作用域(Function Scope):

    • function 作用域是默认的作用域,表示 fixture 在每个测试函数中的生命周期,即每个测试函数执行前创建,执行后销毁。
    • 当每个测试函数都需要独立的资源时,可以使用 function 作用域的 fixture。
    • 可以在测试函数中定义 function 作用域的 fixture,或者使用 @pytest.fixture 装饰器标记的普通函数,默认就是 function 作用域。

通过合理设置不同作用域的 fixture,可以更好地控制资源的创建和销毁时机,提高测试的效率和可维护性。根据测试用例的需求,选择适当的作用域可以确保资源的共享或隔离,从而更好地组织测试代码。

你可能感兴趣的:(#,pytest测试框架,pytest)