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

查看所有标签

猜你喜欢:

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

Python核心编程(第3版)

Python核心编程(第3版)

[美] Wesley Chun / 孙波翔、李斌、李晗 / 人民邮电出版社 / 2016-5 / CNY 99.00

《Python核心编程(第3版)》是经典畅销图书《Python核心编程(第二版)》的全新升级版本,总共分为3部分。第1部分为讲解了Python的一些通用应用,包括正则表达式、网络编程、Internet客户端编程、多线程编程、GUI编程、数据库编程、Microsoft Office编程、扩展Python等内容。第2部分讲解了与Web开发相关的主题,包括Web客户端和服务器、CGI和WSGI相关的We......一起来看看 《Python核心编程(第3版)》 这本书的介绍吧!

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

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具