Exécution simultanée de Pytest (14)


Qu'il s'agisse de cas de test d'automatisation de l'interface utilisateur ou de cas de test d'automatisation d'API, lors de l'écriture et de l'utilisation, vous devez faire attention à l'indépendance de chaque exécution de cas de test, ce qui signifie que chaque cas de test écrit est indépendant les uns des autres, de sorte qu'il ne le sera pas. être causé par L'exécution de A a échoué et B. a également échoué. Pour plus de détails, reportez-vous à l'article sur les spécifications d'écriture de cas de test API. Lors de l'écriture de nombreux cas de test, vous devez tenir compte de son efficacité d'exécution. Dans le cadre de test Pytest, pytest-xdist est fourni pour exécuter des cas de test simultanément afin d'améliorer la vitesse d'exécution des cas de test. Dans des circonstances normales, l'exécution des cas de test est exécutée dans l'ordre selon certaines règles. Le résultat est que certaines ressources ne peuvent être occupées que par un scénario de test à chaque fois qu'il est exécuté, et l'exécution du scénario de test ne peut pas être réalisée. À ce moment de partage de ressources, le plug-in pytest-xdist peut bien résoudre ce problème. D'une part, les ressources sont partagées. Sur la base de la première considération, le deuxième point est d'améliorer l'efficacité de l'exécution des tests.

Voici principalement un cas particulier, le code source du code testé est:

#!/usr/bin/python3
#coding:utf-8
import  pytest
import  time as t


def add(a,b):
   try:
      return a+b
   except Exception as e:
      return e.args[0]

@pytest.mark.parametrize('a,b,result',[
      (1,1,2),
      (1.0,1.0,2.0),
      (1, 1.0, 2.0),
      (1,0,1),
      ('','',''),
      ('hi ','wuya','hi wuya'),
      (0, '', "unsupported operand type(s) for +: 'int' and 'str'"),
      (1,'hi',"unsupported operand type(s) for +: 'int' and 'str'"),
       (1.0,'wuya',"unsupported operand type(s) for +: 'float' and 'str'"),
])
def test_add(a,b,result):
   t.sleep(1)
   assert  add(a,b)==result

Exécution d'une commande:

pytest -v test_time.py

Après l'exécution, les informations de résultat de sortie indiquent que le temps d'exécution est supérieur à 9 secondes, comme illustré dans la figure suivante:

Ce qui suit est exécuté en combinaison avec le plug-in pytest-xdist. Lors de l'exécution, spécifiez un certain nombre de processus de processeur à exécuter. Le code de test ci-dessus peut être exécuté en moins de 9 secondes. La commande d'exécution est:

pytest -v -n 4 test_time.py

Après l'exécution, les informations de résultat de l'exécution sont comme indiqué dans la figure ci-dessous:

Sur la base des informations ci-dessus, on peut voir que sa vitesse d'exécution est supérieure à 4 secondes, ce qui améliore considérablement l'efficacité de l'exécution des tests.

Bien sûr, lorsque vous utilisez le plug-in pytest-xdist, vous devez spécifier le nombre de processus de processeur en cours d'exécution. Vous pouvez également utiliser -n auto pour spécifier le nombre de processeurs à exécuter. Les commandes d'exécution spécifiques sont:

pytest -v -n auto test_time.py

Après exécution, ses informations de résultat sont:

Dans les cas réels, il n'est généralement pas recommandé de spécifier trop de processus de processeur. Cela ne signifie pas nécessairement que spécifier trop de processus de processeur est plus efficace. Il est trop élevé car il prend également une certaine quantité de ressources et de consommation interne, ce qui conduira à l'exécution. L'efficacité est réduite, comme dans le cas présent, elle est spécifiée à 50, mais le temps d'exécution est supérieur à 9 secondes, voir les informations de résultat suivantes:

Le plug-in pytest-xdist peut également être parfaitement intégré à pytest-html pour générer des rapports de test HTML. Par exemple, dans ce cas, on s'attend à ce que le rapport de test soit généré automatiquement après l'exécution. Les commandes exécutées sont:

pytest -v -n 4 --html = report.html heure_test.py

Après l'exécution, un rapport de test de report.html sera généré dans le répertoire courant, comme illustré dans la figure suivante:

Enfin: les avantages

Dans l'industrie de la technologie, vous devez améliorer vos compétences techniques et enrichir votre expérience pratique dans les projets d'automatisation, ce qui sera très utile pour votre planification de carrière dans les prochaines années et la profondeur de votre technologie de test.

Dans la saison des entretiens de Golden 9th et Silver 10th, saison de sauts de poste, organiser des questions d'entrevue est devenu mon habitude depuis de nombreuses années! Ce qui suit est ma collection et mon tri de ces dernières années, le tout est organisé autour de [tests de logiciels], le contenu principal comprend: une vidéo exclusive de test d'automatisation python, des détails d'automatisation Python, un ensemble complet de questions d'entretien et d'autres contenus de connaissances.

Pour les amis qui testent des logiciels, il doit s'agir de l'entrepôt de préparation aux entretiens le plus complet et le plus complet. Afin de mieux organiser chaque module, je me réfère également à de nombreux articles de blog et projets de haute qualité sur Internet, et je m'efforce de ne pas manquer tous les points de connaissance. Des amis se sont appuyés sur ces contenus pour les réviser et ont reçu des offres de grandes usines telles que BATJ. Cet entrepôt a également aidé de nombreux apprenants aux tests de logiciels, et j'espère qu'il pourra vous aider aussi!

Que vous et moi nous rencontrions et vous trouverez quelque chose! Bienvenue pour suivre le compte public WeChat: [Sad Spicy Article] Recevez gratuitement un livre d'entrevue d'ingénieur de test logiciel de 216 pages. Et les didacticiels vidéo d'apprentissage correspondants sont gratuits à partager!

Je suppose que tu aimes

Origine blog.csdn.net/weixin_50829653/article/details/112863788
conseillé
Classement