我正在学习有关pyest的参数化测试。在关注the relevant pytest documentation之后,我想出了这个简单的例子:
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):
。
导致此错误的原因是什么?如何解决?
答案 0 :(得分:1)
灯具的目标是将对象传递给测试用例,但是你制作的灯具不会返回或产生任何东西。
然后我不确定你可以将对象传递给unittest TestCase方法,我认为它可能会与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
编辑: