在python中对paramaterize单元测试进行测试

Jen*_*lin 6 python unit-testing nose pytest

我正在研究一组python单元测试,这些测试目前是使用内置测试框架的pythons构建的.我想编写参数化测试,根据我给出的数据集执行多次.

即.如果我的数据集是[1,2,3,4],我的测试函数将使用我的数据集中的输入运行四次.

def test(data):
    if data > 0:
       #Pass the test
Run Code Online (Sandbox Code Playgroud)

根据我的理解,目前在内置框架中这是不可能的,除非我在我的测试函数中放置一个循环.我不想这样做,因为即使一个输入失败,我也需要测试继续执行.

我已经看到可以使用nose或pyTest.哪个是最好的框架?是否有另一个我可以使用的框架比其中任何一个更好?

提前致谢!

Syl*_*ain 6

请注意,这恰恰是最近加入的最常见的用途之一funcargspy.test.

在你的情况下,你会得到:

def pytest_generate_tests(metafunc):
    if 'data' in metafunc.funcargnames:
        metafunc.parametrize('data', [1,2,3,4])

def test_data(data):
    assert data > 0
Run Code Online (Sandbox Code Playgroud)

[编辑]我应该补充一点,你也可以这样做

@pytest.mark.parametrize('data', [1,2,3,4])
def test_data(data):
    assert data > 0
Run Code Online (Sandbox Code Playgroud)

所以我会说py.test是参数化单元测试的一个很好的框架......