py.test: передать параметр в функцию прибора
Я использую py.test для тестирования некоторого кода DLL, обернутого в класс Python MyTester. Для проверки цели мне нужно записать некоторые тестовые данные во время тестов и выполнить дополнительную обработку после этого. Поскольку у меня много тестовых файлов _..., я хочу повторно использовать создание объекта тестера (экземпляр MyTester) для большинства моих тестов.
Поскольку объект тестера - тот, который получил ссылки на DLL 'переменные и функции мне нужно передать список DLLs переменные объекта тестера для каждого из тестовых файлов (регистрируемые переменные одинаковы для тестового файла _...). Содержимое списка должно использоваться для регистрации указанных данных.
Моя идея сделать это как-то так:
import pytest
class MyTester():
def __init__(self, arg = ["var0", "var1"]):
self.arg = arg
# self.use_arg_to_init_logging_part()
def dothis(self):
print "this"
def dothat(self):
print "that"
# located in conftest.py (because other test will reuse it)
@pytest.fixture()
def tester(request):
""" create tester object """
# how to use the list below for arg?
_tester = MyTester()
return _tester
# located in test_...py
# @pytest.mark.usefixtures("tester")
class TestIt():
# def __init__(self):
# self.args_for_tester = ["var1", "var2"]
# # how to pass this list to the tester fixture?
def test_tc1(self, tester):
tester.dothis()
assert 0 # for demo purpose
def test_tc2(self, tester):
tester.dothat()
assert 0 # for demo purpose
Можно ли этого достичь или есть еще более элегантный способ?
Обычно я мог сделать это для каждого метода тестирования с помощью некоторой функции настройки (стиль xUnit). Но я хочу получить какое-то повторное использование. Кто-нибудь знает, возможно ли это с приборами вообще?
Я знаю, что могу сделать что-то вроде этого: (из документов)
@pytest.fixture(scope="module", params=["merlinux.eu", "mail.python.org"])
Но мне нужна параметризация прямо в тестовом модуле.Можно ли получить доступ к атрибуту params прибора из тестового модуля?