__unittest.TestCas的init

2024-05-10 04:50:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在初始化unittest.TestCase类时添加一些内容,但我不知道如何执行。

现在我要做的是:

#filename test.py

class TestingClass(unittest.TestCase):

    def __init__(self):
        self.gen_stubs()

    def gen_stubs(self):
        # Create a couple of tempfiles/dirs etc etc.
        self.tempdir = tempfile.mkdtemp()
        # more stuff here

我希望整个测试集的所有存根只生成一次。我不能使用setUpClass(),因为我正在使用Python 2.4(我也没能在python2.7上使用)。

我在这里做错什么了?

我得到这个错误:

 `TypeError: __init__() takes 1 argument (2 given)` 

…以及当我使用命令python -m unittest -v test运行所有存根代码时,将其移到__init__中的其他错误。


Tags: pytestself内容initdef错误etc
3条回答

试试这个:

class TestingClass(unittest.TestCase):

    def __init__(self, *args, **kwargs):
        super(TestingClass, self).__init__(*args, **kwargs)
        self.gen_stubs()

您正在重写TestCase__init__,因此您可能希望让基类为您处理参数。

只是想添加一些关于重写

unittest.TestCase

函数将在测试类中的每个方法之前调用。请注意,如果要在运行所有测试方法之前添加一些应该执行一次的昂贵计算,请使用SetUpClassclassmethod

@classmethod
def setUpClass(cls):
    cls.attribute1 = some_expensive_computation()

此函数将在类的所有测试方法之前调用一次。请参阅在每个测试方法之前调用的方法的设置。

安装unittest2并使用该包的unittest。

import unittest2 

然后使用setupModule/tearDownModule或setupClass/tearDown类 对于特殊初始化逻辑

更多信息:http://www.voidspace.org.uk/python/articles/unittest2.shtml

同样,很可能您创建的集成测试比unittest要多。 为测试选择一个好的名称来区分它们,或者将它们放入不同的容器模块中。

相关问题 更多 >