首先,要小心一点。
为什么要运行相同的测试五次?我不想在没有看到你的代码的情况下做出假设,但这是一个非常严重的代码味道。单元测试必须是可重复的,如果连续运行五次所得到的结果与运行一次的结果不同,则测试中的某些内容是不可重复的。特别是,如果测试的早期运行产生了稍后运行所使用的副作用,或者涉及某种随机数,那么这两种情况都是非常糟糕的情况,需要修复而不是多次运行测试。仅根据我们这里掌握的信息,最好的建议很可能是不要多次运行该测试!
话虽如此,您有几种不同的选择。
- 将循环放入测试中
假设调用函数五次是有意义的,那么执行以下操作是完全合理的:
def test_function_calls(self):
for _ in xrange(1, 5):
self.assertTrue(f())
- 既然你提到了鼻标,你有一些选择参数化测试,通常包括对不同的输入值运行相同的(代码)测试。如果你使用类似的东西https://github.com/wolever/nose-parameterized https://github.com/wolever/nose-parameterized,那么你的结果可能是这样的:
@parameterized.expand([('atest', 'a', 1), ('btest', 'b', 2)])
def test_function_calls(self, name, input, expected):
self.assertEqual(expected, f(input))
顾名思义,参数化测试通常用于检查具有多条数据的一个代码测试。如果您只想让测试运行几次,您可以有一个包含虚拟数据的列表,但这是另一个可疑的代码结构,可以追溯到我最初的观点。
附注:几乎所有“连续”构建工具都设置为触发构建/测试等。在特定条件或事件上,例如将代码提交到存储库时。对他们来说,简单地运行测试是很不寻常的不断地.
我已经尽力回答你的问题了,但我感觉缺少了一些东西。您可能想准确地澄清您想要完成的任务,以获得最佳答案。