我正在通过pytest灯具,以下看起来非常相似,最新的作品非常相似。
是的, yield_fixure 的可读性更好,但有人可以让我知道究竟有什么区别。
我应该使用哪种情况,如下所述?
@pytest.fixture()
def open_browser(request):
print("Browser opened")
def close_browser():
print("browser closed")
request.addfinalizer(close_browser)
return "browser object"
@pytest.yield_fixture()
def open_browser():
print("Browser opened")
yield "browser object"
print("browser closed")
def test_google_search(open_browser):
print(open_browser)
print("test_google_search")
答案 0 :(得分:11)
唯一的区别在于可读性。我认为(虽然我并非100%肯定)基础行为是相同的(即yield
语句作为终结器运行后的清理)。我总是喜欢使用屈服夹具进行清理,因为它更具可读性。
如果您使用的是pytest< 3.0,那么您仍然需要使用pytest.yield_fixture
来获取该行为。但是,如果您能够使用pytest 3.0+,则不推荐使用pytest.yield_fixture
,并且您可以使用pytest.fixture
来获得相同的yield_fixture
行为。
自pytest-3.0以来,使用普通夹具装饰器的灯具可以使用 yield语句,用于提供夹具值和执行拆卸代码, 与之前版本中的yield_fixture完全相同。
仍然支持将函数标记为yield_fixture,但已弃用 不应在新代码中使用。
答案 1 :(得分:0)
addfinalizer
在产量上有两个主要区别: