如何用pytest测试不同模块中的相同函数
我想在不同的模块中测试一个函数。在一个模块里,我定义了一个调用一些C++代码的函数,而在另一个模块里,我有一个相同的函数,但它调用的是不同的代码。请问我该如何使用py.test来实现这个测试呢?
1 个回答
1
你可以使用metafunc,并创建一个叫做 conftest.py
的文件,里面包含 pytest_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 来请求库的名字:
def test_import(libname):
import importlib
tested_library = importlib.import_module(libname)
.......
现在,当你运行测试时,你需要提供你想测试的模块的名字:py.test tests.py --libname=your_name1
(你也可以加上 --libname=your_name2
)