如何用pytest测试不同模块中的相同函数

1 投票
1 回答
804 浏览
提问于 2025-04-18 11:07

我想在不同的模块中测试一个函数。在一个模块里,我定义了一个调用一些C++代码的函数,而在另一个模块里,我有一个相同的函数,但它调用的是不同的代码。请问我该如何使用py.test来实现这个测试呢?

1 个回答

1

你可以使用metafunc,并创建一个叫做 conftest.py 的文件,里面包含 pytest_addoptionpytest_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 来请求库的名字:

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

现在,当你运行测试时,你需要提供你想测试的模块的名字:py.test tests.py --libname=your_name1(你也可以加上 --libname=your_name2

撰写回答