J'apprends des tests paramétrés avec pyest. Après avoir suivi the relevant pytest documentation, je suis venu avec cet exemple simple:Paramétrisation des tests avec 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')
Cela donne l'erreur suivante:
Failed: The requested fixture has no parameter defined for the current test.
E
E Requested fixture 'foo' defined in:
E tests/fixture.py:7
ligne 7 est def foo(request):
.
Quelle est la cause de cette erreur et comment la réparer?
J'utilise normalement '@ pytest.mark.parametrise (» request ', [' foo ',' bar ']) '. Il ne répond pas à votre question, mais il pourrait fonctionner comme une solution rapide (où 'request' est le nom de l'argument) – Artyer
@Artyer Merci pour la suggestion. Les documents que je lie n'ont pas ceci, donc je suis toujours intéressé à apprendre ce que je fais mal. –
Je pense que le problème est comme mentionné dans l'erreur, vous n'avez pas défini le paramètre, comme l'a dit @Artyer dans son exemple, il nomme "demande" et transmet ensuite les valeurs. Dans votre code, vous passez à la fonction foo l'argument request mais il n'y a pas de paramètre car vous ne définissez pas à l'intérieur de l'appareil –