python – pytest:如何将类参数传递给setup_class

栏目: Python · 发布时间: 5年前

内容简介:翻译自:https://stackoverflow.com/questions/19736363/pytest-how-to-pass-a-class-parameter-to-setup-class

我正在使用pytest的参数化注释将params传递给一个类.我能够在测试方法中使用参数,但是,我无法弄清楚如何在setup_class方法中使用这些参数.

import pytest

params = ['A','B','C']

@pytest.mark.parametrize('n', params)
class TestFoo:

    def setup_class(cls):
        print ("setup class:TestFoo")
        # Do some setup based on param

    def test_something(self, n):
        assert n != 'D'

    def test_something_else(self, n):
        assert n != 'D'

我尝试添加’n’作为参数,如测试方法,如下所示:

def setup_class(cls, n):
        print ("setup class:TestFoo")
       # Do some setup based on param

这会导致错误:

self = <Class 'TestFoo'>

    def setup(self):
        setup_class = xunitsetup(self.obj, 'setup_class')
        if setup_class is not None:
            setup_class = getattr(setup_class, 'im_func', setup_class)
            setup_class = getattr(setup_class, '__func__', setup_class)
>           setup_class(self.obj)
E           TypeError: setup_class() takes exactly 2 arguments (1 given)

是否有其他方法在setup_class方法中使用该参数?

你不能.

首先,每个类只调用一次setup_class,即使使用了参数化夹具 – 类只设置一次.

其次,它不是设计为采取任何其他参数而不是cls.它不接受来自paramterize和其他固定装置的参数.

作为解决方案,您可以使用具有“类”范围的参数化夹具:

import pytest

params = ['A', 'B', 'C']


@pytest.fixture(
    scope="class",
    params=params,
)
def n(request):
    print('setup once per each param', request.param)
    return request.param


class TestFoo:

    def test_something(self, n):
        assert n != 'D'

    def test_something_else(self, n):
        assert n != 'D'

有关更多信息,请查看 http://docs.pytest.org/en/latest/fixture.html#fixture-parametrize

翻译自:https://stackoverflow.com/questions/19736363/pytest-how-to-pass-a-class-parameter-to-setup-class


以上所述就是小编给大家介绍的《python – pytest:如何将类参数传递给setup_class》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Eloquent JavaScript

Eloquent JavaScript

Marijn Haverbeke / No Starch Press / 2011-2-3 / USD 29.95

Eloquent JavaScript is a guide to JavaScript that focuses on good programming techniques rather than offering a mish-mash of cut-and-paste effects. The author teaches you how to leverage JavaScript's......一起来看看 《Eloquent JavaScript》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器