fixture的工厂模式,返回需要的参数时,用yield为什么返回一个generator呢?
@pytest.fixture
def make_customer_record():
def _make_customer_record(name):
yield {"name": name, "orders": []}
return _make_customer_record
def test_customer_records(make_customer_record):
customer_1 = make_customer_record("Lisa")
print(customer_1)
以上的运行结果是这样:
<generator object make_customer_record.<locals>._make_customer_record at 0x10e78ecd0>
但是用 return 的时候:
@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")
print(customer_1)
响应结果就是 {'name': 'Lisa', 'orders': []}
疑问:
1、请问为什么这种工厂函数的时候,yield返回的是generator呢?
2、这种情况下,想要做用例执行完后的数据清理,还有没有办法在一个fixture里面完成呢?