11
votes

Comment faire tester des demandes HTTPS d'unités dans le flacon?

Pour certaines pages dans une application de flacon, je crée, j'ai un système de redirection HTTPS comme suit. XXX

Si vous ne demandez pas la version HTTPS de la page, il redirige vous à cela. Je veux écrire des tests d'unité pour ce service. J'ai écrit un qui veille à ce que vous soyez redirigé vers la version HTTPS (Vérifier un 301 ou A 301, fondamentalement). Je tiens à tester que si vous demandez la version HTTPS de la page et que vous êtes déjà sur https, cela ne vous redirige pas (fondamentalement, pour un 200). Comment obtenir la fiole d'envoyer une demande HTTPS dans le test de l'unité?


2 commentaires

Avez-vous déjà compris cela?


@nu_evest C'était une longue, il y a longtemps, et je n'ai pas essayé la réponse de Belrogen car le projet était déjà terminé. IIRC Nous avons fini par obtenir un certificat HTTPS pour l'environnement de test et écrire un test manuel rapide ... pas idéal.


5 Réponses :


1
votes

Avez-vous regardé Test de l'unité pour le flacon ?

Après votre code d'installation, Vous aurez quelque chose comme ceci xxx

update

Il semble que la meilleure voie à suivre consiste à créer un environnement WERKZEUG. Le flacon utilise le client de test Werkzeugn. Vous pouvez consulter l'API ici . Le QuickStart (qui est utile) est ici .

vous ' Je vais voir que Werkzeug possède un environnement d'enveloppe avec une base_url. Peut-être qu'il est possible de jouer avec cela pour imiter un environnement HTTPS dans votre suite de test.


2 commentaires

Ce n'est pas vraiment ce que je cherchais; Je l'ai clarifié juste maintenant. Je veux simuler une demande HTTPS dans un test unitaire.


J'ai mis à jour ma réponse. Je ne sais vraiment pas si Test Suites répondra à des tests HTTPS. Ce qui précède est mon meilleur coup pour trouver une solution.



0
votes

J'utiliserais la bibliothèque de requêtes Python: http://docs.python-requests.org / fr / Dernières /

Très facile à faire des demandes HTTP avec elle.


1 commentaires

J'ai essayé cela, mais je veux que les tests de l'unité fonctionnent sans moi exécuter un serveur HTTPS.



-2
votes

Avec la bibliothèque de demandes, vous pouvez ignorer SSL avec le drapeau de vérification.

requests.get('https://example.com', verify=False)


1 commentaires

J'ai essayé cela, mais la question est que je dois avoir un serveur HTTPS fonctionnant (sur le port 483 ou quelque chose). Le flacon fournit-il des installations pour cela?



5
votes

Vous pouvez forcer l'appel de l'essai de flacon () pour utiliser HTTPS comme ceci:

response = self.app.get('/login', base_url='https://localhost')
assert(response.status_code == 200)


1 commentaires

Bien que cela fonctionne, répondez Stackoverflow.com/a/63708394/9415337 est beaucoup mieux. Il permet moins de répétitions (entre différents tests d'unités) et il n'est pas nécessaire de corriger l'adresse de l'hôte.



1
votes

Il y a une voie de fiole encore plus facile à faire, il suffit d'utiliser le paramètre préférérecred_url_scheme de configuration est égal à "https".

Vous pouvez trouver la définition de la définition ici . Vous pouvez trouver les règles comment elle est utilisée en interne par le flacon ici . Vous pouvez également trouver comment son ici .


0 commentaires