目录
前言
Fixture定义
fixture的优势
fixture参数列表
1. function(默认)
2. class 每个测试类调用一次 fixture,所有测试方法共享同一个 fixture 实例。
3. module 每个测试模块调用一次 fixture,模块内的所有测试方法共享同一个 fixture 实例。
4. session:在整个测试会话期间只调用一次 fixture,适合用于全局资源配置。
fixure常用用法
参考文献
pytest fixture 是一种用来管理测试依赖和资源的机制。
简单来说,就是做初始化准备,比如一些测试用例需要打开浏览器或者链接数据库才能进行测试,因此我们需要在有需要的测试用例面前加上fixture进行测试前的资源准备。
通过在函数前面加上
@pytest.fixture()装饰器来装饰一个函数,那么被装饰的这个函数就是一个fixture
@pytest.fixture(scope="function", params=None, autouse=False, ids=None, name=None)
def test():
print("fixture初始化的参数列表")
参数列表
注意:session的作用域:是整个测试会话,即开始执行pytest到结束测试
案例如下:
function
(默认)每个测试函数都会独立调用一次 fixture。
import pytest
@pytest.fixture(scope="function")
def function_fixture():
print("Function fixture setup")
yield
print("Function fixture teardown")
def test_one(function_fixture):
print("Running test_one")
def test_two(function_fixture):
print("Running test_two")
输出
Function fixture setup
Running test_one
Function fixture teardown
Function fixture setup
Running test_two
Function fixture teardown
class
每个测试类调用一次 fixture,所有测试方法共享同一个 fixture 实例。import pytest
@pytest.fixture(scope="class")
def class_fixture():
print("Class fixture setup")
yield
print("Class fixture teardown")
class TestExample:
def test_one(self, class_fixture):
print("Running test_one")
def test_two(self, class_fixture):
print("Running test_two")
输出:
Class fixture setup
Running test_one
Running test_two
Class fixture teardown
module
每个测试模块调用一次 fixture,模块内的所有测试方法共享同一个 fixture 实例。import pytest
@pytest.fixture(scope="module")
def module_fixture():
print("Module fixture setup")
yield
print("Module fixture teardown")
def test_one(module_fixture):
print("Running test_one")
def test_two(module_fixture):
print("Running test_two")
输出:
Module fixture setup
Running test_one
Running test_two
Module fixture teardown
session
:在整个测试会话期间只调用一次 fixture,适合用于全局资源配置。import pytest
@pytest.fixture(scope="session")
def session_fixture():
print("Session fixture setup")
yield
print("Session fixture teardown")
def test_one(session_fixture):
print("Running test_one")
def test_two(session_fixture):
print("Running test_two")
输出:
Session fixture setup
Running test_one
Running test_two
Session fixture teardown
account
和 login
fixture 分别用于设置测试环境和返回必要的数据。login
fixture 依赖于 account
,这表明可以将多个 fixture 链接在一起,以便共享状态或初始化数据。import pytest
@pytest.fixture()
def account():
print("Account")
return "Ret-Account"
# 调用上面的account fixture
@pytest.fixture()
def login(account):
print("Login")
class TestDemo:
def test_case1(self, login):
print("调用了login,返回值为{}".format(login))
def test_case2(self, account):
print("调用了account,返回值为{}".format(account))
pytest之fixture用法01:fixture详解-百度开发者中心
Pytest进阶之fixture的使用(超详细)_pytest fixture用法-CSDN博客
Pytest系列(4) - fixture的详细使用 - 小菠萝测试笔记 - 博客园
pytest 执行用例的基本使用 - 哩子吖 - 博客园