使用unittest(自3.4起)
从Python 3.4开始,标准库unittest包就有了subTest上下文管理器。
查看文档:
例:from unittest import TestCaseparam_list = [('a', 'a'), ('a', 'b'), ('b', 'b')]class TestDemonstrateSubtest(TestCase):
def test_works_as_expected(self):
for p1, p2 in param_list:
with self.subTest():
self.assertEqual(p1, p2)
您还可以指定自定义消息和参数值subTest():with self.subTest(msg="Checking if p1 equals p2", p1=p1, p2=p2):
用鼻子
该鼻测试框架支持此。
示例(下面的代码是包含测试的文件的全部内容):param_list = [('a', 'a'), ('a', 'b'), ('b', 'b')]def test_generator():
for params in param_list:
yield check_em, params[0], params[1]def check_em(a, b):
assert a == b
nosetests命令的输出:> nosetests -v
testgen.test_generator('a', 'a') ... ok
testgen.test_generator('a', 'b') ... FAIL
testgen.test_generator('b', 'b') ... ok======================================================================FAIL: testgen.test_generator('a', 'b')----------------------------------------------------------------------Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/nose-0.10.1-py2.5.egg/nose/case.py", line 203, in runTest
self.test(*self.arg)
File "testgen.py", line 7, in check_em assert a == bAssertionError----------------------------------------------------------------------Ran 3 tests in 0.006sFAILED (failures=1)