Trois, dispositif de fixation (montage d'essai)

1, pytest fixturesvise à fournir une base fixe, de sorte que le test peut être fiable, répétitivement réalisée sur cette base, comparative xUnitclassique setup/teardownforme, il est une nette amélioration dans les aspects suivants:

  • fixtureNous avons un nom clair , en déclarant qu'il ne peut en fonction, classe, module, ou même être activé pendant l'essai utilisé lors de la session;
  • fixtureDans une manière modulaire . Parce que chaque fixturenom peut déclencher une fonction de fixation , et cela peut fonction dans l' appel à leur tour d' autres fixture;
  • fixtureGestion élargie du simple au test unitaire de tests fonctionnels complexes , et l'ensemble permet des options de configuration paramétriques fixturecas de test, ou à travers des fonctions, des classes, des modules, ou même la réutilisation de toute séance d'essais fixture;

 

2, en utilisant

(1) l'utilisation en tant que paramètre

 

 

 processus de mise en œuvre

  • pytestcas de test Collected test_ehlo, il a un paramètre smtp_connection, pytesttrouver un nom déjà enregistré fixture;
  • Joué smtp_connection()pour créer une smtp_connectioninstance <smtplib.SMTP object at 0x00000244923A5F60>comme l' test_ehloargument;
  • 执行 test_ehlo (<object smtplib.SMTP à 0x00000244923A5F60>).

Vous pouvez également utiliser l'invocation de ligne de commande: --fixtures de pytest [TestPath]

 

2, l'appareil: l'injection réelle est un exemple typique

fixtureLaisser test peut facilement recevoir et traiter les besoins d' un objet d'application particuliers à l' opération de pré-initialisation, sans trop concerné Import / Paramètres / nettoyage détail, de l' injection de dépendance, dans lequel le c'est une pratique typique de l' fixtureinjection de l' acteur ( injector) de le rôle joué par les consommateurs et les tests ( clientrôle);

 

3, conftest.py: Exemples de fixation partage 

Si vous voulez partager avec l' un d'une pluralité de modules de test par fixtureexemple, vous pouvez l' utiliser fixturepour accéder au conftest.pyfichier. Introduction ne nécessite pas le module de test manuel en elle, pytesttrouvera automatiquement fixturela recherche séquentielle est: test de la catégorie, le module de test, conftest.pyet enfin le tiers des plug-ins et est construit ;

Vous pouvez également utiliser conftest.pyle fichier de cette fonction pour chaque répertoire pour obtenir une prise localisée ;

 

4, les données de test de partage

Si vous voulez tester plusieurs actions de test le même fichier de données, il y a deux bon moyen d'y parvenir:

  • Pour charger les données dans fixturele test eux pour la réutilisation fixture;
  • Ces fichiers de données dans des testsdossiers, des plug-ins tiers pour gérer l' essai 5 dans ce domaine, le champ d' application: les cas d'utilisation à travers des cours, des modules et séance d'essais ensemble, partagé exemples fixation 

En @pytest.fixtureajoutant décorateur scope='module'paramètre, chaque module de test est appelé une seule fois smtp_connection(la valeur par défaut sera appelée une fois pour chaque cas d'utilisation), tous les tests de ces modules partagent la même fixtureinstance, dans laquelle scopeles valeurs des paramètres sont possibles: function(par défaut classvaleur), module,, packageetsession;

exemple

 

 

 

 

Remarque: pytestChaque fois qu'un cache uniquement par fixtureexemple lors de l' utilisation paramétrés fixturetemps, pytestpeut être appelé à plusieurs reprises dans le cadre de la présente déclaration fixture;

5, fixation instancié commande

Plusieurs fixtureinstances de la séquence, les principes suivants:

  • champ d' application de haut niveau ( par exemple: session) avant oscilloscopes à bas niveau ( par exemple: classou function) instanciation;
  • champ d' application de niveau identique, dont des exemples qui suit l'ordre dans lequel la séquence est déclaré dans le test ( à savoir du paramètre de commande) , ou fixtureappeler la relation entre les deux;
  • L' activation d' autouseun fixturepremier niveau avec son autre fixtureinstanciation;

Autres Note:

  • En plus de autousel' fixtureétat requis affiché essai (paramètres), il ne sera pas instancié pas déclarée;

  • Une pluralité de la même portée autouse fixture, des exemples qui suit l'ordre de fixturenom de la fonction de tri;

 

 

6, les opérations de nettoyage de fixation

(1) un rendement de retour proxy

La fixturefonction de returnremplacement des mots - clés pour yield, le yieldcode suivant est de faire l'opération de nettoyage;

 

 

 

 

(2) l'utilisation avec

 

 

(3) Méthode utilisant addfinalizer

fixtureUne fonction capable de recevoir un requestparamètre représentant un contexte de la demande de test ; on peut utiliser request.addfinalizerun procédé d' fixtureadjonction fonction de nettoyage;

 

 

Note: yieldAvant ou la addfinalizergénération de code sortie d'erreur avant l' enregistrement, ne sera plus effectuer les opérations de nettoyage ultérieures.

 

Je suppose que tu aimes

Origine www.cnblogs.com/Tester-Chenmo/p/12533336.html
conseillé
Classement