max*_*max 7 python refactoring unit-testing python-3.x
我有一个看起来像这样的测试用例:
def MyTestCase(unittest.Testcase):
def test_input01(self):
input = read_from_disk('input01')
output = run(input)
validated_output = read_from_disk('output01')
self.assertEquals(output, validated_output)
def test_input02(self):
input = read_from_disk('input02')
# ...
# and so on, for 30 inputs, from input01 to input30
Run Code Online (Sandbox Code Playgroud)
现在,我知道测试代码可能有点重复,因为简洁比简洁更重要.但这变得非常容易出错,因为当我决定更改这里使用的某些功能的签名时,我不得不在所有30个地方进行更改.
我可以将它重构为已知输入的循环,但我确实希望每个输入都保持单独的测试,所以我认为我应该制作这些test_inputxx方法.
我究竟做错了什么?
Ned*_*der 12
编写一个帮助函数来删除测试用例中的重复:
def MyTestCase(unittest.Testcase):
def run_input_output(self, suffix):
input = read_from_disk('input'+suffix)
output = run(input)
validated_output = read_from_disk('output'+suffix)
self.assertEquals(output, validated_output)
def test_input01(self): self.run_input_output('01')
def test_input02(self): self.run_input_output('02')
def test_input03(self): self.run_input_output('03')
Run Code Online (Sandbox Code Playgroud)