Параметризация тестов с помощью pytest
Я узнаю о параметризованных тестах с Pyest. После ознакомления с соответствующей документацией по pytest, я пришел к этому простому примеру:
import unittest
import pytest
@pytest.fixture(autouse=True, params=['foo', 'bar'])
def foo(request):
print('fixture')
print(request.param)
class Foo(unittest.TestCase):
def setUp(self):
print('unittest setUp()')
def test(self):
print('test')
Это дает следующую ошибку:
Failed: The requested fixture has no parameter defined for the current test.
E
E Requested fixture 'foo' defined in:
E tests/fixture.py:7
Строка 7 def foo(request):
,
Что вызывает эту ошибку и как ее исправить?
1 ответ
Цель приборов - передать объекты в тестовые наборы, но созданный вами прибор не возвращает и ничего не дает.
Тогда я не уверен, что вы можете передавать объекты в метод TestCase unittest, я думаю, что это может создать некоторые конфликты с параметром self.
С другой стороны, он может работать с простой функцией:
@pytest.fixture(autouse=True, params=['foo', 'bar'])
def foo(request):
print('fixture')
print(request.param)
yield request.param
# class Foo(unittest.TestCase):
# def setUp(self):
# print('unittest setUp()')
#
# def _test(self):
# print('test')
def test_fixture(foo):
assert foo == 'foo'
>>> 1 failed, 1 passed in 0.05 seconds
# test 1 run with foo : OK
# test 2 run with bar : FAILED
РЕДАКТИРОВАТЬ:
Действительно: Почему я не могу unittest.TestCases увидеть мои py.test приборы?