让 pytest 对每个测试进行 运行 设置和拆卸(来自 nose)
Getting pytest to run setup and teardown for every test (coming from nose)
如何在每个测试中制作此测试套件(见下文)运行 setup
和 teardown
?
import system
def setup():
system.bootstrap() # create vanilla installation.
def teardown():
system.reset() # reset installation.
def test01():
# <-- expects setup()
system.create_user('bob')
assert 'bob' in system.directory
# <-- expects teardown() even when the assertion fails.
def test02():
# <-- expects setup()
system.create_user('jane')
assert 'jane' in system.directory
# <-- expects teardown() even when the assertion fails.
我确定 答案很接近,我只是无法在 windows-11 上的 VScode 中使用它。
我查看了文档中的 how to implement xunit-style set-up,但未传递任何函数。测试非常functional
.
我看到的是 test01 运行s 带有 setup
和 teardown
,但 test02 没有。
我的心智模型缺少什么?
在写问题时,我发现如果我将它们重命名为 setup_function
和 teardown_function
.
,pytest
会运行设置和拆卸
不需要参数。
import system
def setup_function():
system.bootstrap() # create vanilla installation.
def teardown_function():
system.reset() # reset installation.
def test01():
# <-- expects setup()
system.create_user('bob')
assert 'bob' in system.directory
# <-- expects teardown() even when the assertion fails.
def test02():
# <-- expects setup()
system.create_user('jane')
assert 'jane' in system.directory
# <-- expects teardown() even when the assertion fails.
windows11 上的 pytest。Python3.9.10。测试 7.0.1
虽然您的解决方案有效,但我建议使用 pytest fixture --
import system
@pytest.fixture(autouse=True)
def handle_system():
system.bootstrap()
yield
system.reset()
如何在每个测试中制作此测试套件(见下文)运行 setup
和 teardown
?
import system
def setup():
system.bootstrap() # create vanilla installation.
def teardown():
system.reset() # reset installation.
def test01():
# <-- expects setup()
system.create_user('bob')
assert 'bob' in system.directory
# <-- expects teardown() even when the assertion fails.
def test02():
# <-- expects setup()
system.create_user('jane')
assert 'jane' in system.directory
# <-- expects teardown() even when the assertion fails.
我确定 functional
.
我看到的是 test01 运行s 带有 setup
和 teardown
,但 test02 没有。
我的心智模型缺少什么?
在写问题时,我发现如果我将它们重命名为 setup_function
和 teardown_function
.
pytest
会运行设置和拆卸
不需要参数。
import system
def setup_function():
system.bootstrap() # create vanilla installation.
def teardown_function():
system.reset() # reset installation.
def test01():
# <-- expects setup()
system.create_user('bob')
assert 'bob' in system.directory
# <-- expects teardown() even when the assertion fails.
def test02():
# <-- expects setup()
system.create_user('jane')
assert 'jane' in system.directory
# <-- expects teardown() even when the assertion fails.
windows11 上的 pytest。Python3.9.10。测试 7.0.1
虽然您的解决方案有效,但我建议使用 pytest fixture --
import system
@pytest.fixture(autouse=True)
def handle_system():
system.bootstrap()
yield
system.reset()