UPDATE:
,因为你需要:
- 喂一些变量价值MyTestCase
- 使用此值运行MyTestCase
- 更改值
- 如果MyTestCase仍在运行 - 使用更新的值。
考虑一下:
- 保持值映射文件中(.CSV/.TXT/.XML /等)
- 读值从文件映射在
setUp()
- 寻找价值为您的MyTestCase从值映射使用
TestCase.id()
方法(如下面的示例所示)。
- 在测试用例中使用它。
unittest
具有方便id()
method,这在filename.testclassname.methodname
格式返回测试用例的名字。
所以你可以使用它像这样:
import unittest
my_variables_map = {
'test_01': 'foo',
'test_02': 'bar',
}
class MyTest(unittest.TestCase):
def setUp(self):
test_method_name = self.id() # filename.testclassname.methodname
test_method_name = test_method_name.split('.')[-1] # method name
self.variable_value = my_variables_map.get(test_method_name)
self.error_message = 'No values found for "%s" method.' % test_method_name
def test_01(self):
self.assertTrue(self.variable_value is not None, self.error_message)
def test_02(self):
self.assertTrue(self.variable_value is not None, self.error_message)
def test_03(self):
self.assertTrue(self.variable_value is not None, self.error_message)
if __name__ == '__main__':
unittest.main()
这给了你:
$ python /tmp/ut.py
..F
======================================================================
FAIL: test_03 (__main__.MyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/ut.py", line 25, in test_03
self.assertTrue(self.variable_value is not None, self.error_message)
AssertionError: No values found for "test_03" method.
----------------------------------------------------------------------
Ran 3 tests in 0.000s
FAILED (failures=1)
$
难道你不能编辑测试吗? – Marcin 2012-02-13 15:02:17
你能创建另一个包含这个数组共享值的文件吗? – CppLearner 2012-02-13 15:02:19
我可以编辑测试。我的意思是“我无法访问实际执行对象实例化的代码”,因为这些对象是在调用loadTestsFromTestCase()的某个位置创建的。如果我重写了测试加载器,我可以将该变量传递给init(),但这看起来很愚蠢。 – denaje 2012-02-13 17:53:17