pytest中yield用法
时间: 2023-12-02 14:41:15 浏览: 166
在pytest中,yield可以用来代替return进行返回。特别地,当fixture函数需要在前置操作中返回数据时,可以在yield之前进行操作,yield之后进行后置操作。示例如下:
```python
import pytest
@pytest.fixture()
def fixture_demo():
# setup
print("\n连接数据库")
yield
# teardown
print("清空脏数据")
def test_case(fixture_demo):
print("执行test_case")
assert True
if __name__ == '__main__':
pytest.main(["-s"])
```
在上述代码中,fixture_demo函数在yield之前进行了前置操作,即连接数据库,yield之后进行了后置操作,即清空脏数据。
另外,当fixture函数需要在多个测试用例中使用时,可以使用autouse=True参数,使其自动应用于所有测试用例。示例如下:
```python
import pytest
@pytest.fixture(autouse=True)
def fixture_one():
print("执行fixture_one")
yield 1
def test_e(fixture_one):
print("执行test_e")
print(fixture_one)
assert fixture_one == 1
if __name__ == '__main__':
pytest.main(["-s"])
```
在上述代码中,fixture_one函数被autouse=True参数修饰,因此会自动应用于所有测试用例。在test_e测试用例中,fixture_one被作为参数传入,并打印了其返回值。
阅读全文