unittest传递变量作为参数

时间:2012-11-23 02:16:43

标签: python unit-testing

我有一个在一个函数中创建的数据结构并传递给其他函数。我正在尝试对所有这些功能进行单元测试。

我是否需要在每个功能上重新创建该数据结构(环境)?我尝试使用全局变量,但我不能保证哪个测试用例会在另一个之前运行。

我知道我无法轻易覆盖__init__的{​​{1}}。

我还能怎样做到这一点?传递参数或以某种方式使其成为变量并避免竞争条件?

1 个答案:

答案 0 :(得分:1)

听起来您不希望在每次测试之前重新定义数据结构。只要测试不修改数据,我认为在__init__中定义数据结构没有任何问题:

import unittest

class Test(unittest.TestCase):
    def __init__(self, methodName = 'runTest'):
        unittest.TestCase.__init__(self, methodName)
        self.data = range(5)

    def test_getitem(self):
        self.assertEqual(self.data[1],1)

    def test_reversed(self):
        self.assertEqual(list(reversed(self.data)),[4,3,2,1,0])

if __name__ == '__main__':
    import sys
    sys.argv.insert(1,'--verbose')
    unittest.main(argv = sys.argv)

产量

% test.py
test_getitem (__main__.Test) ... ok
test_reversed (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK