首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有可能用固定装置将测试参数化吗?

有可能用固定装置将测试参数化吗?
EN

Stack Overflow用户
提问于 2015-11-09 14:27:33
回答 1查看 906关注 0票数 2

我想传递的@pytest.mark.parametrize不是特定的值,而是固定装置。就像这样。

作告解时:

代码语言:javascript
复制
@pytest.fixture
def name1():
    return 'foo'

@pytest.fixture
def name2():
    return 'bar'

当然,在我的test.py中,这是起作用的:

代码语言:javascript
复制
@pytest.mark.parametrize('name', ['foo', 'bar', 'baz'])
def test_name(name):
    print(name)

这并不意味着:

代码语言:javascript
复制
 @pytest.mark.parametrize('name', [name1, name2])
 def test_name(name):
     print(name)

我知道,在这个微不足道的情况下,我只需要创建一个名称治具并将其参数化,但在某些情况下,这是不可剥夺的。

我发现的一种方法是使用pytest_factoryboyLazyFixture,然而,在我的测试中,我经常无法访问lazyfixtures属性。

EN

回答 1

Stack Overflow用户

发布于 2016-01-11 21:20:55

我会坚持在夹具参数化

在您的示例中,这相当于:

代码语言:javascript
复制
@pytest.fixture(params=['foo', 'bar'])
def name(request):
    return request.param

def test_name(name):
    print(name)

另一种选择:

代码语言:javascript
复制
@pytest.fixture(params=[1,2])
def name(name1, name2, request):
    if request.param == 1:
        return name1()
    elif request.param == 2:
        return name2()

def test_name(name):
    print(name)

哪种方法最适合您,将取决于您测试的具体情况,也可能取决于您可能试图利用的预先存在的补丁。

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

https://stackoverflow.com/questions/33611321

复制
相关文章

相似问题

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