При использовании встроенных типов в качестве параметров фикстуры pytest распечатывает значения параметров в отчете о тестировании. Например:
@fixture(params=['hello', 'world']
def data(request):
return request.param
def test_something(data):
pass
Выполнение этого с py.test --verbose
напечатает что-то вроде:
test_example.py:7: test_something[hello]
PASSED
test_example.py:7: test_something[world]
PASSED
Обратите внимание, что значение параметра печатается в квадратных скобках после имени теста.
Теперь, когда в качестве параметра используется объект пользовательского класса, например:
class Param(object):
def __init__(self, text):
self.text = text
@fixture(params=[Param('hello'), Param('world')]
def data(request):
return request.param
def test_something(data):
pass
pytest просто перечислит количество значений (p0
, p1
и т. д.):
test_example.py:7: test_something[p0]
PASSED
test_example.py:7: test_something[p1]
PASSED
Это поведение не меняется, даже когда определяемый пользователем класс предоставляет пользовательские реализации __str__
и __repr__
. Есть ли способ сделать так, чтобы pytest отображал что-то более полезное, чем просто p0
здесь?
Я использую pytest 2.5.2 на Python 2.7.6 в Windows 7.