3

我在 Python 中使用 unittest 和 nose 进行单元测试,但现在我使用的是 py.test。
unittest 和 nose 总是class.setUp在执行 TestCase 中的每个方法之前调用。

我怎样才能用 py.test 做到这一点?

编辑:如果我添加这个:

def setup_class(cls):
    cls.a = pypol.polynomial('x^3 - 2x^2 + x -5')
    cls.b = pypol.polynomial('a^3 - 2x^2 - b + 3')
    cls.c = pypol.polynomial('-x + 1')
    cls.d = pypol.polynomial('a')

我得到所有错误:

_____________________________ TestPolynomial.testSetitem ______________________________

self = <test_pypol.TestPolynomial object at 0x97355ec>

    def testSetitem(self):
>       TestPolynomial.a[2] = (3, {'x': 3, 'y': 4})
E       AttributeError: type object 'TestPolynomial' has no attribute 'a'

test_pypol.py:162: AttributeError
_____________________________ TestPolynomial.testDelitem ______________________________

self = <test_pypol.TestPolynomial object at 0x9735eac>

    def testDelitem(self):
>       del TestPolynomial.a[1:3]
E       AttributeError: type object 'TestPolynomial' has no attribute 'a'

EDIT2:好的,我很愚蠢。我必须放在 TestCase 里面而不是外面。谢谢你。

4

1 回答 1

1

听起来您需要setup_method在测试类上定义:

https://codespeak.net/py/0.9.2/test.html#managing-test-state-across-test-modules-classes-and-methods

于 2011-01-18T15:40:29.807 回答