首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >参数化的pytest -将参数传递给setup和teardown

参数化的pytest -将参数传递给setup和teardown
EN

Stack Overflow用户
提问于 2021-06-23 20:08:54
回答 1查看 47关注 0票数 2

如何将与传递给测试函数相同的参数传递给setup和teardown函数?

代码语言:javascript
运行
复制
import pytest

test_data = [("3+5", 8), ("2+4", 6), ("6*9", 42)]


@pytest.mark.parametrize("test_input,expected", test_data)
def test_eval(test_input, expected):
    assert eval(test_input) == expected


def setup():
    print("setup")


def teardown():
    print("teardown")

在我的实际用例中,我会根据传递给测试函数的参数来初始化和清理数据库。

我读过一些例子,但这些例子似乎都不能涵盖所有的设置、测试和拆卸都是参数化的情况。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-23 20:13:39

使用fixture进行设置和拆卸,您可以将参数发送给它

代码语言:javascript
运行
复制
test_data = [("3+5", 8), ("2+4", 6), ("6*9", 42)]


@pytest.fixture(scope='function', autouse=True)
def setup_and_teardown(test_input, expected):
    print("setup")
    print('Parameters:', test_input, expected)
    yield
    print("teardown")


@pytest.mark.parametrize("test_input,expected", test_data)
def test_eval(test_input, expected):
    assert eval(test_input) == expected
    print("*************************************")

输出:

代码语言:javascript
运行
复制
setup
test_input: 3+5 expected: 8
PASSED                                 [ 33%]*************************************
teardown
setup
test_input: 2+4 expected: 6
PASSED                                 [ 66%]*************************************
teardown
setup
test_input: 6*9 expected: 42
FAILED                                [100%]
Tests\Example_test.py:34 (test_eval[6*9-42])
54 != 42

Expected :42
Actual   :54
<Click to see difference>

test_input = '6*9', expected = 42

    @pytest.mark.parametrize("test_input,expected", test_data)
    def test_eval(test_input, expected):
>       assert eval(test_input) == expected
E       assert 54 == 42
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68099559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档