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

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

内容简介:翻译自: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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

成功由我

成功由我

刘世英、彭征 / 湖南人民出版社 / 2010-2 / 28.00元

《成功由我:李彦宏快乐成功之道》讲述:他,18岁高分考入北京大学,毕业后到美国名校学习最热门的计算机专业,然后闯荡于华尔街和硅谷这两大金融和技术圣地,31岁回国创立百度……到如今身价数十亿美元,领导的百度发展成为全球第二大搜索引擎,在国内搜索市场占据近八成的市场份额,将有“上帝”之称的Google抛在身后,最近他又掀起了“框计算”风暴,并雄心万丈宣称“未来十年,要让百度在全球一半以上国家成为家喻户......一起来看看 《成功由我》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具