python - python中的参数化单元测试

标签 python unit-testing nose pytest

我从事一组 python 单元测试,这些单元测试目前是使用内置于测试框架中的 python 构建的。我想编写参数化测试,这些测试将根据我提供的数据集执行多次。

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

def test(data):
    if data > 0:
       #Pass the test

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

我已经看到可以使用 nose 或 pyTest 来完成。哪个是最好用的框架?有没有我可以使用的比这两个更好的框架?

提前致谢!

最佳答案

请注意,这恰恰是最近添加的 funcargs 最常见的用途之一。在 py.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

[编辑] 我可能应该补充一点,你也可以像这样简单地做到这一点

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

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

关于python - python中的参数化单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9439765/

相关文章:

Python3 - 迭代具有相似名称的对象方法

java - Concordion - 需要显示一堆数据而不检查值

unit-testing - 对 Scala 词法分析器进行单元测试

java - 如何使用 PowerMock 模拟 ServletFileUpload 的创建?

python - Nose 测试 : error: no such option: --with-doctest

python - 将多个不同数据类型的 Numpy 数组写入 CSV 文件的列

python - 如何使 django 所有 url 都达到级别 slug?

python - unittest 无法发现/运行测试

python - 从 noses setup package() 迁移到 pytest

python - 如何检查字符串中是否有特殊字符或数字但不在该字符串的末尾?