如何使用pytest从各种模块测试相同的功能

时间:2014-06-26 03:26:08

标签: python pytest

我想对来自不同模块的函数运行我的测试(在一个模块中我定义了调用一些C ++代码的函数,而在另一个模块中我有相同的函数调用不同的代码)。使用py.test做什么的方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用metafunc并使用conftest.pypytest_addoption函数创建pytest_generate_tests文件:

def pytest_addoption(parser):
    parser.addoption("--libname", action="append", default=[],
                     help="name of the tested library")

def pytest_generate_tests(metafunc):
    if 'libname' in metafunc.fixturenames:
        metafunc.parametrize("libname", metafunc.config.option.libname)

tests.py文件的函数中,您可以使用importlib并询问libname:

def test_import(libname):
    import importlib
    tested_library = importlib.import_module(libname)
    .......

现在,运行测试时,您应该提供要测试的模块的名称: py.test tests.py --libname=your_name1(您还可以添加--libname=your_name2