Fra*_*ank 9 python unit-testing python-2.6
在Python中,如何为一整套单元测试设置一个设置(可能包含昂贵的函数调用)?
例:
import unittest
class Test1(unittest.TestCase):
def setUp(self):
print "expensive call"
def test1(self):
self.assertEqual(1, 1)
def test2(self):
self.assertEqual(1, 1)
if __name__ == "__main__":
unittest.main()
Run Code Online (Sandbox Code Playgroud)
将运行两次昂贵的电话:
$ python unittest.py
expensive call
.expensive call
.
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
Run Code Online (Sandbox Code Playgroud)
如何更改它,以便只进行一次昂贵的调用,并且所有测试都可以访问其资源?
更新:我使用的是Python 2.6.
Chr*_*isB 15
您可以使用setUpClass
import unittest
class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
print 'setUpClass'
cls.data = 123
def test_one(self):
print 'test_one'
print self.data
def test_two(self):
print 'test_two'
if __name__ == "__main__":
unittest.main()
Run Code Online (Sandbox Code Playgroud)
请参阅http://docs.python.org/library/unittest.html#unittest.TestCase.setUpClass
更新:
对于python 2.6,我想你可以使用类级属性:
class Test(unittest.TestCase):
value = result_of_some_expensive_function()
def test(self):
print self.value
Run Code Online (Sandbox Code Playgroud)
定义测试时,该函数将运行一次.