Python是否提供了使用多个测试输入运行相同单元测试的方法?

时间:2015-08-15 16:57:52

标签: python unit-testing

使用C#和NUnit,存在TestCase attribute和T estCaseSource attribute,两者都允许对单元测试进行参数化,以便可以使用不同的输入多次使用相同的“测试” 。这样可以减少代码重复,同时保持可读性。

Python有类似的东西吗?

编辑: @Dunes提到了subtests,我应该把它作为这个问题的一部分。不幸的是,它只是一个3.4功能,我希望支持2.7和3.4。

2 个答案:

答案 0 :(得分:1)

答案是subTest。但是,这仅适用于Python 3.4。

但是有unittest2。它提供了Python 3.4(包括subTest)中unittest的最新功能的后端。 unittest2经过测试,可在Python 2.6,2.7,3.2,3.3,3.4和pypy上运行。

答案 1 :(得分:0)

有几个库可以让你这样做。例如,py.test示例如下:

import pytest
@pytest.mark.parametrize("test_input,expected", [
    ("3+5", 8),
    ("2+4", 6),
    ("6*9", 42),
])

def test_eval(test_input, expected):
    assert eval(test_input) == expected

这来自py.test documentation