Y a-t-il un moyen de tester le code HTML à partir de la réponse de: Je souhaite un contrôle détaillé comme des identifiants d'entrée et d'autres attributs. En outre, que diriez-vous des sessions qui ont été définies? est-il possible de vérifier leurs valeurs dans le test? p> p>
3 Réponses :
Pas sûr, mais jetez un coup d'œil à HTTPS: //docs.djangoproject.com/fr/dev/topics/testing/tools/#testing-responses . P>
réponse.Context code> est peut-être un moyen de vérifier vos valeurs. P>
Le contexte code> code> ne contiendra pas nécessairement la session que si l'application met la session dans le contexte. Souvent, un meilleur choix consiste à utiliser AssserContains pour vérifier le contenu de la page et vérifier les balises.
C'est bien, j'ai décidé de ne pas tester la session pour l'instant depuis ce que j'étais réellement après, c'est ce qui a été défini en session une fois que l'utilisateur est connecté. Peut-être plus tard lorsque j'ai quelque chose d'important sur la session à tester.
@MARCONI: Vous JAMAIS B> avez quelque chose dans la session à tester. Vous n'avez que des choses définies dans la session qui sont changements de comportement visibles b>. S'il n'y a pas de changement dans le comportement de l'application, la valeur de la session n'a pas d'importance et il n'y a rien à tester.
Simon Willison's SOUPE-SELECT est un bon moyen de tester le contenu d'une réponse HTML Basé sur les sélecteurs de CSS de JQuery-like. Donc, par exemple, pour vérifier que votre page a une entrée avec ID my_input_id code>:
Souvent, les asserContains déjà disponibles dans Django TestCases fait ce travail plus simplement que d'introduire un analyseur HTML externe. docs.djangoproject.com/fr/1.1/topie / Test / ...
Avec Python 3 et Django 1.11, j'ai fait l'équivalent des éléments suivants: de BS4 Import BeauXoup comme soupe de SouSelect Importer Sélectionner une réponse = Self.client.get ('/ Utilisateur / Connexion /') Soupe = soupe (réponse .Content, 'html.parser') self.asserquals (len (SELECT (SOUP (SOUP (SOUP) MY_INPUT_ID '))), 1) code>
Attention.
Aussi, que diriez-vous des sessions qui ont été définies? Est-il possible de vérifier leurs valeurs dans le test? P> blockQuote>
TDD concerne le comportement visible de l'extérieur. Pour voir si l'utilisateur a une session, vous fourniriez un lien qui fonctionne uniquement lorsque l'utilisateur est connecté et dispose d'une session. p>
La perceuse habituelle est quelque chose comme ce qui suit. p>
xxx pré> c'est-à-dire, lorsqu'il n'est pas connecté, certains (ou tous) la redirection de l'URI de la page de connexion . p>
xxx pré> C'est-à-dire, quand connecté dans, certains (ou tous) le travail de l'URI comme prévu. p>
En outre, la réponse URI contient les balises que vous avez besoin. p>
Vous ne testez pas Django pour voir si elle crée une session . Django a déjà des tests unitaires pour cela. Vous testez le comportement visible de votre application - cela se comporte-t-il comme une session? Sont des pages correctement visibles? Sont-ils correctement personnalisés avec des informations spécifiques à la session? P> p>
Merci. Je sais déjà à ce sujet. Je suppose que j'ai juste besoin d'envelopper ma tête autour de moi depuis que je l'ai vu dans des rails que vous pouvez tester des sessions et des balises HTML de la réponse /
@MARCONI: Les balises HTML peuvent être examinées avec AsserContains. L'objet de session elle-même n'est pas visible de manière externe et ne peut donc pas faire partie d'un test approprié. Si le test de l'unité Ruby expose la session, quelque chose ne va pas avec leur approche. Test d'un objet de session n'est pas très courant pour les tests unitaires - je ne sais pas pourquoi ils exposeraient cet objet au cadre de test.
"ID d'entrée et autres attributs". Qu'est-ce que c'est? S'il vous plaît soyez spécifique afin que nous puissions vous fournir une aide spécifique que vous pouvez utiliser.
Je parle de balises d'entrée HTML et de ses attributs. Est-il possible de vérifier cela aussi?
Tags d'entrée HTML? Voulez-vous dire les balises HTML incluses dans un formulaire? Bien sûr, cela est dans la réponse et il est trivialement disponible pour vérifier. Veuillez mettre à jour votre question pour dire en réalité ce que vous essayez de tester. S'il vous plaît ne pas commenter votre propre question. C'est ta question. Mettre à jour cela pour être complet.