pytest fixture

Fixture终结/执行teardown代码

pytest支持当fixture超出范围时执行指定的终结代码。通过接受一个request对象在你的fixture函数中,你可以调用它的request.addfinalizer一次或多次。

# content of conftest.py

import smtplib
import pytest

@pytest.fixture(scope="module")
def smtp(request):
    smtp = smtplib.SMTP("smtp.gmail.com")
    def fin():
        print ("teardown smtp")
        smtp.close()
    request.addfinalizer(fin)
    return smtp  # provide the fixture value
当在模块中最后一个使用fixture的test被执行完毕后,fin函数会被执行。
让我们执行它:

$ py.test -s -q --tb=no
FFteardown smtp

2 failed in 0.12 seconds
我们可以看到当两个test执行结束后,smtp实例被终结。

本文翻译自:pytest官网

你可能感兴趣的:(pytest fixture)