目录
简介
conftest.py: 数据共享
Fixture+yield实现setup teardown
Fixtures工厂方法
Fixture参数化
目的是为测试的重复执行提供一个可靠的固定基线
Fixture参数含义:
Conftest.py
@pytest.fixture(scope="session")
def say_no():
print("say no test fixture")
测试用例(不需要导入conftest.py,直接可以使用):
def test_s(say_no):
print("abc")
运行结果:
注意:
Conftest.py
@pytest.fixture(scope="session")
def say_no():
print("setup")
yield
print("teardown")
测试用例
def test_s(say_no):
print("abc")
“工厂作为Fixture方法”模式可以在单个测试中多次需要Fixture方法结果的情况下提供帮助。不是直接返回数据,而是返回一个生成数据的函数。然后可以在测试中多次调用此函数。 Fixtures工厂方法可根据需要提供参数生成Fixture和方法:
@pytest.fixture
def make_customer_record():
def _make_customer_record(name):
return {
"name": name,
"orders": []
}
return _make_customer_record
def test_customer_records(make_customer_record):
customer_1 = make_customer_record("Lisa")
customer_2 = make_customer_record("Mike")
customer_3 = make_customer_record("Meredith")
fixture 通过固定参数 request 传递参数
例如:
@pytest.fixture(params=['tom', "jack", "tony"], ids=["name1", "name2", "name3"])
def demo(request):
print("-------")
yield request.param
print("=======")
def test_demo(demo):
print("name", demo)