Résolue

Pytest django et recaptcha

# Tests unitaires # Documentation # Formulaires

Gabriel Trouvé

Mentor

Bonsoir,

Je lâche l'affaire... lol

ça fait 1h que j'essaye de passer un recaptcha avec pytest. J'ai essayé pleins de manières. En utilisant os dans conftest pour créer de la variable d'env mais non...

"test" in sys.argv ça ne va plus, même si c'était bien avec TestCase, car forcément avec pytest on a plus "test".

Quand j'enlève le champ recaptcha du formulaire mon test passe. Donc le problème vient bien de lui.

Quelqu'un aurait une façon de gérer ça ? lol

Merci d'avance ! :)

EDIT : j'ai pensé à regader un peu partout sauf... dans la doc ! Donc je regarde ce soir si ce que la doc dit peut me débloquer...

Mais si jamais vous avez une idée avant que je regarde je suis preneur aussi lol

Thibault houdon

Mentor

Salut Gab,

Tu veux dire que ce qui ne fonctionne pas c'est plutôt la désactivation du captcha en fonction de si tu lances des tests ou non ? (pour éviter de faire la résolution du captcha quand tu lances tes tests) ?

Ou tu parles de la résolution même du captcha en mode test (ce qui est une mauvaise idée car pour tes tests il vaut mieux effectivement enlever la vérification du captcha au complet).

Gabriel Trouvé

Mentor

Re Thibault !

"""Tu veux dire que ce qui ne fonctionne pas c'est plutôt la désactivation du captcha en fonction de si tu lances des tests ou non ? (pour éviter de faire la résolution du captcha quand tu lances tes tests) ?"""

J'ai essayé ça aussi ^^

Mais je n'ai pas réussi :s

Gabriel Trouvé

Mentor

class SignUpForm(UserCreationForm):
    if not DEBUG:
        security = ReCaptchaField(label="Sécurité")

Tu valides ? lol

j'en peux plus, je n'arrive pas à mocker. Même GPT... lol

Salut Gab !

De mon côté j'ai cette variable dans mon settings.py :

TEST_MODE = 'pytest' in sys.argv[0]

Et dans ma vue signup du coup je vérifie si je ne suis pas en mode DEBUG ou en mode TEST_MODE È

if not settings.DEBUG and not settings.TEST_MODE:
    # Je vérifie le captcha

Du coup tu devrais pouvoir t'en sortir juste avec la vérification de pytest dans ta commande.

Gabriel Trouvé

Mentor

Nan mais attend je crois que j'ai oublié de tester ça... il me semblait l'avoir fait mais j'avais un autre problème à la base.

Car je fais comme ça avec unitest TEST_MODE = 'test' in sys.argv

Bon je retente comme tu m'as dis (ce soir ou demain au plus tard !)

Merci bcq !

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.