__init__ for unittest.TestCase

我想添加一些东西,什么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 

我希望所有的存根都能在这整套testing中只产生一次。 我不能使用setUpClass()因为我正在使用Python 2.4(我还没有能够得到在Python 2.7上工作,但…)

我在这里做错了什么?

我得到一个TypeError: __init__() takes 1 argument (2 given)

和其他错误,当我将所有的存根代码移动到__init__时,我用python -m unittest -v test

尝试这个:

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

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

安装unittest2并使用该包的unittest。

 import unittest2 

然后使用setupModule / tearDownModule或setupClass / tearDown类来实现特殊的初始化逻辑

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

另外你最有可能创build一个比unit testing更多的集成testing。 为testingselect一个好的名称来区分它们或放在不同的容器模块中。