Pytest设置和拆卸函数-与自写函数相同?

2022-03-01 00:00:00 python pytest

问题描述

在pytest文档中的以下示例中:

函数setup_function应该为其他函数设置一些数据,比如test_data。因此,如果我编写函数test_data,则必须调用setup_function,如下所示:

def test_data():
    setup_function(....)
    <Test logic here>
    teardown_function(....)

所以唯一的区别是名称约定?

我不明白它到底是如何帮助我创建设置数据的。我本可以像这样编写相同的代码:

def test_data():
    my_own_setup_function(....)
    <Test logic here>
    my_own_teardown_function(....)
由于无法告诉pytest自动将设置函数链接到测试函数,因此它会为函数function的参数function创建设置数据-如果我不需要函数指针,setup_function参数对我没有真正的帮助。那么,为什么要无缘无故地费心创建命名约定呢?

据我所知,Setup函数参数function仅在我需要使用函数指针时才对我有帮助-这是我很少需要的东西。


解决方案

如果要设置一项或多项测试的细节,可以使用"普通"pytext装置。

import pytest

@pytest.fixture
def setup_and_teardown_for_stuff():
    print("
setting up")
    yield
    print("
tearing down")

def test_stuff(setup_and_teardown_for_stuff):
    assert 1 == 2

要记住的是,良率之前的所有操作都是在测试之前运行的,良率之后的所有操作都是在测试之后运行的。

tests/unit/test_test.py::test_stuff 
setting up
FAILED
tearing down

相关文章