Я хотел бы запустить свой тест для функции из разных модулей (в одном модуле я определяю функцию, которая вызывает некоторый код C++, а в другом модуле у меня есть та же функция, которая вызывает другой код). Как это сделать с помощью py.test?
как протестировать одну и ту же функцию из разных модулей с помощью pytest
Ответы (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
)
person
d_j
schedule
29.06.2014
pytest_generate_tests(metafunc)
, и это работает. - person d_j   schedule 27.06.2014