问题:__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
我希望针对整个测试集只生成一次所有存根。我无法使用,setUpClass()
因为我正在使用Python 2.4(我也无法在python 2.7上使用该功能)。
我在这里做错了什么?
我收到此错误:
`TypeError: __init__() takes 1 argument (2 given)`
__init__
当我使用命令运行所有存根代码时,…以及其他错误python -m unittest -v test
。
回答 0
试试这个:
class TestingClass(unittest.TestCase):
def __init__(self, *args, **kwargs):
super(TestingClass, self).__init__(*args, **kwargs)
self.gen_stubs()
您正在覆盖TestCase
的__init__
,因此您可能希望让基类为您处理参数。
回答 1
只是想添加一些关于重写init函数的说明
unittest.TestCase
该函数将在测试类中的每个方法之前调用。请注意,如果您想添加一些昂贵的计算,然后再运行所有测试方法,则应执行一次,请使用SetUpClass类方法
@classmethod
def setUpClass(cls):
cls.attribute1 = some_expensive_computation()
该函数将在该类的所有测试方法之前被调用一次。有关setUp
在每个测试方法之前调用的方法,请参见。
回答 2
安装unittest2并使用该软件包的unittest。
import unittest2
然后使用setupModule / tearDownModule或setupClass / tearDown类进行特殊的初始化逻辑
更多信息:http : //www.voidspace.org.uk/python/articles/unittest2.shtml
同样,您很有可能正在创建集成测试而不是单元测试。为测试选择一个好的名称以区分它们,或将其放在其他容器模块中。