首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >可以将对象或变量从测试函数传递到函数fixture吗?

可以将对象或变量从测试函数传递到函数fixture吗?
EN

Stack Overflow用户
提问于 2019-07-25 17:00:53
回答 1查看 31关注 0票数 2

在pytest中,我试图弄清楚是否可以将对象或变量从测试函数传递给“函数作用域”fixture (或者传递给fixture setup或者teardown)。

EN

回答 1

Stack Overflow用户

发布于 2019-08-16 17:38:57

您可能会按如下方式与灯具交互,但它不在设置或拆卸中:

代码

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

class FixtureStack():
    def __init__(self):
        self.messages = []

    def __str__(self):
        return f'messages={self.messages}'

    def push(self, msg):
        self.messages.append(msg)


@pytest.fixture(scope='function')
def stack():
    yield FixtureStack()


def test_1(stack):
    print(stack)
    stack.push('msg_1')
    print(stack)
    assert stack.messages == ['msg_1']


def test_2(stack):
    print(stack)
    stack.push('msg_2')
    print(stack)
    assert stack.messages == ['msg_2']

Pytest执行:

代码语言:javascript
代码运行次数:0
运行
复制
$ pytest -v driver.py -s
=============================================== test session starts ================================================
platform linux -- Python 3.7.1, pytest-5.0.1, py-1.7.0, pluggy-0.12.0 -- /home/backend/venvs/py3.7.1/bin/python3.7
cachedir: .pytest_cache
rootdir: /home/backend/backend, inifile: pytest.ini
plugins: mock-1.10.4
collected 2 items

driver.py::test_1 messages=[]
messages=['msg_1']
PASSED
driver.py::test_2 messages=[]
messages=['msg_2']
PASSED

============================================= 2 passed in 0.01 seconds =============================================
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57198103

复制
相关文章

相似问题

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