2021 tutoriel complet d'automatisation des tests d'interface python [matériel d'apprentissage joint]

tutoriel complet automatisation des tests

【Résumé】 Définition de l'interface:Les interfaces ont généralement deux significations,L'un estAPI(Application ProgramInterface),Interface de programmation d'application,C'est un ensemble de définitions、Une collection de programmes et de protocoles,AdoptionAPIL'interface permet la communication entre les logiciels informatiques.Et l'autre estInterface,C'est un langage orienté objet commejava,c#Une spécification dans l'attente,Il permet des fonctions Multi - héritées.L'interface dans l'essai d'interface fait référence àAPI.Pourquoi utiliser l'interface:Si l'entreprise n'a pas encore terminé le développement de produits de première ligne,...

Catalogue des articles

Un.、Définition de l'interface
2.、Processus de base
Trois、Analyse des besoins
Quatre、Conception de cas d'utilisation
Cinq、Développement de scripts
Six、Partage automatisé des ressources d'essai

Un.、Définition de l'interface

Les interfaces ont généralement deux significations,L'un estAPI(Application Program Interface),Interface de programmation d'application,C'est un ensemble de définitions、Une collection de programmes et de protocoles,AdoptionAPIL'interface permet la communication entre les logiciels informatiques.Et l'autre estInterface,C'est un langage orienté objet commejava,c#Une spécification dans l'attente,Il permet des fonctions Multi - héritées.L'interface dans l'essai d'interface fait référence àAPI.

Pourquoi utiliser l'interface:

Si l'entreprise n'a pas encore terminé le développement de produits de première ligne,Interface développée.Un jour, le chef a dit,Xiao Wang.,Vous avez testé cette fonction de connexion,Si vous ne comprenez pas l'interface, vous direz au chef que cette fonction ne peut pas être testée,Page non développée.Les dirigeants vont vous envoyer!@¥@)¥!

Le test d'interface n'a pas besoin de voir la page de première ligne , Peut être impliqué dans le travail d'essai plus tôt ,Améliorer la productivité.

Selon la pyramide d'essai , Plus le coût est bas, plus le coût est faible. ,Un sous - solbug Peut causer plus d'un niveau supérieur bug, Donc le test est plus bas , Plus la qualité du produit est garantie , Et plus vous économisez sur les tests . Les tests unitaires sont généralement effectués par le développement , Donc pour les tests, , Les tests d'interface sont nécessaires .

Pour les essais automatisés ,UI La plus grande variabilité ,Alors...UILe coût de maintenance des tests automatisés est élevé. Et l'interface a très peu changé , Les tests automatisés d'interface sont donc les plus pratiques , Le plus économique .

2.、Processus de base

Le processus d'essai automatique de la fonction d'interface est le suivant: :Analyse des besoins -> Conception de cas d'utilisation -> Développement de scripts -> Exécution des essais -> Analyse des résultats


2.1 Exemple d'interface
Adresse du numéro de téléphone mobile
Adresse de l'interface: apis.juhe.cn/mobile/get
Retour au format: json/xml
Mode de demande: get
Exemple de demande: apis.juhe.cn/mobile/get?…

Trois、Analyse des besoins

L'analyse des besoins est une exigence de référence 、 Documents de conception, etc. , La logique interne de mise en œuvre doit être claire sur la base de la compréhension des exigences. , Et à ce stade, les besoins peuvent être exprimés 、 Toute irrégularité ou omission dans la conception .
Par exemple:: Interface locale du numéro de téléphone mobile , Saisissez le numéro de téléphone de différents segments , Voir à quel opérateur appartient le numéro de téléphone et à quel opérateur appartient le numéro de téléphone

Quatre、Conception de cas d'utilisation

Cinq、Développement de scripts

5.1 Installation du module
UtiliserpipLa commande peut être installée:
pip install requests Copier le Code
5.2 Appel d'interface
UtiliserrequestsBibliothèque, Nous pouvons facilement écrire les méthodes d'appel d'interface ci - dessus (Comme entréephone=Numéro de téléphone portable,Voici un exemple de code:):
Lors de l'écriture réelle d'un script de test automatisé , Il nous faut des paquets. .
#!/usr/bin/python3 import unittest import requests import json class Test_Moblie(unittest.TestCase): # Encapsulation des données publiques def common(self, phone): url = "http://apis.juhe.cn/mobile/get" date = { 'key': "4391b7dd8213662798c3ac3da9f54ca8", 'phone': phone } self.response = requests.get(url, params=date) return self.response def test_1(self): self.common("1857110") print(self.response.text) def test_2(self): self.common("1868115") print(self.response.text) if __name__ == '__main__': unittest.main() Copier le Code
\
Nous avons conçu selon le cas d'essai , Écrivez des scripts de test automatisés pour chaque fonction à tour de rôle .
5.3 Vérification des résultats
Lors de l'essai manuel de l'interface , Nous devons déterminer si ce test est réussi par les résultats retournés par l'interface. , Il en va de même pour les essais automatisés. .
Pour l'interface actuelle ,Entrez le téléphone, Nous devons juger les résultats retournés resultcodeEst - ce égal à200 Lors de la pagination des résultats, il est nécessaire de vérifier si le nombre de résultats retournés est correct, etc. . Les codes de vérification des résultats complets sont les suivants: :
#!/usr/bin/python3 import unittest import requests class Test_Moblie(unittest.TestCase): # Encapsulation des données publiques def common(self, phone): url = "http://apis.juhe.cn/mobile/get" date = { 'key': "4391b7dd8213662798c3ac3da9f54ca8", 'phone': phone } self.response = requests.get(url, params=date) return self.response def test_2(self): self.common("1868115") print(self.response.json()) dict_2 = self.response.json() # Valeur d'impression la valeur de la province est :200 resultcode = dict_2["resultcode"] # Exemple d'erreur d'expression , Changer la valeur de comparaison en 200, La valeur correcte est 200,Peut être modifié self.assertEqual(resultcode, "200", msg='Raison de l'échec:%s != %s' % (resultcode, "200")) if __name__ == '__main__': unittest.main() Copier le Code
\
Résultats des opérations:

 5.4 Générer un rapport d'essai
Après l'exécution du cas d'utilisation , Il faut envoyer un rapport au chef. .
Alors nous utilisonsHTMLTestRunnerNo3 Génération de modules carrés htmlFormat du rapport d'essai
from unittest import TestSuite from unittest import TestLoader import requests import json import HTMLTestRunner import unittest class Test_Moblie(unittest.TestCase): # Encapsulation des données publiques def common(self, phone): url = "http://apis.juhe.cn/mobile/get" date = { 'key': "4391b7dd8213662798c3ac3da9f54ca8", 'phone': phone } self.response = requests.get(url, params=date) return self.response def test_1(self): """ Code d'état du jugement """ self.common("1857110") print(self.response.json()) # Les données retournées sontdict print(type(self.response.json())) dict_1 = self.response.json() # Valeur d'impression la valeur de la province est :Hubei province = dict_1["result"]["province"] self.assertEqual(province, "Hubei", msg='Raison de l'échec:%s != %s' % (province, "Hubei")) def test_2(self): """ Province de jugement """ self.common("1868115") print(self.response.json()) dict_2 = self.response.json() # Valeur d'impression la valeur de la province est :Hubei resultcode = dict_2["resultcode"] # Exemple d'erreur d'expression , Changer la valeur de comparaison en 201, La valeur correcte est 200,Peut être modifié self.assertEqual(resultcode, "201", msg='Raison de l'échec:%s != %s' % (resultcode, "200")) if __name__ == '__main__': report = "E:/report_path/result.html" file = open(report,"wb") # Créer une suite de tests testsuit = unittest.TestSuite() testload = unittest.TestLoader() # Le nom de la classe entre parenthèses , Se trouve automatiquement à test Début de tous les cas d'utilisation # Les cas d'utilisation sont stockés sous forme de tableaux de cas case = testload.loadTestsFromTestCase(Test_Moblie) testsuit.addTests(case) run = HTMLTestRunner.HTMLTestRunner(stream=file, title="Rapport d'essai d'automatisation des interfaces", description="Résultats de l'exécution du cas d'utilisation") run.run(testsuit) file.close() Copier le Code
5.5 Envoyer un rapport par courriel
Une fois le test terminé,On peut utiliserzmail Méthode d'envoi fournie par le module htmlFormat du rapport d'essai
Le processus de base est de lire le rapport d'essai -> Ajouter le contenu du message et les pièces jointes -> Connexion au serveur de courrier -> Envoyer un message -> Sortie,Voici un exemple de code::
#!/usr/bin/python3 import zmail def send_mail(): # Définir le message mail = {"subject": "Rapport d'essai d'interface",# À remplir 'content_text': ' Adresse du numéro de téléphone mobile _APIRapport d'essai automatisé',# À remplir # Liste des pièces jointes "attachments": "E:/report/result.html" } # Serveur personnalisé server = zmail.server(" Courriel de l'expéditeur .com", "QQ La boîte aux lettres utilise le Code d'autorisation ", smtp_host="smtp.qq.com", smtp_port = 465) # Envoyer un message server.send_mail("DestinatairesQQBoîte aux lettres", mail) try: send_mail() except FileNotFoundError: print("Fichier introuvable") else: print("Envoyé avec succès") Copier le Code
6. Analyse des résultats
Ouvrir le rapport d'essai généré après la fin , Vous pouvez voir que ce test a été effectué 2Cas d'essai,1Succès,1Échec de l'article 

Envoi final du rapport de test ,Les captures d'écran sont les suivantes:

Six、Partage automatisé des ressources d'essai

Enfin, merci à tous ceux qui ont lu attentivement mon article,Regarder les fans monter et se concentrer,Il y a toujours quelque chose à faire.,Ce n'est pas très précieux.,Si vous pouvez l'utiliser, vous pouvez l'enlever directement:

Ces informations, L'entrepôt de préparation le plus complet et le plus complet pour les amis de l'automatisation avancée ,Cet entrepôt accompagne également des dizaines de milliers d'ingénieurs d'essais sur les plus difficiles,J'espère que ça t'aidera aussi.!

À moi.QQDans le Groupe d'échange technique(Échange de technologies et partage des ressources,Pas de publicité.)

Vous pouvez les prendre vous - même.,Numéro de groupe:310357728,Le matériel gratuit dans le Groupe est l'essence de plus de dix ans de carrière d'essai de l'auteur.Et les grands dieux de la compagnie communiquent avec la technologie Oh

Si ça t'aide.,Prends un cadeau et cache - le.,Donner un encouragement à l'auteur.Il est également pratique pour vous de trouver rapidement la prochaine fois.

版权声明
本文为[Petit frère a dit que c'était un test.]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/10/20211028205730238n.html

  1. 预备知识-python核心用法常用数据分析库(下)
  2. python 文件排版,怎么控制写入在对应文件的位置(要写吐了,真是服了)
  3. Preliminary Knowledge - Python Core use Common Data Analysis Library (ⅰ)
  4. Typographie de fichiers Python, comment contrôler l'écriture à l'emplacement du fichier correspondant (pour écrire et vomir, vraiment pris)
  5. python:例题求解,不知道怎么等输入完所有数字后再输出
  6. 用python来实现:根据实际查询结果补充完整数据
  7. Mise en œuvre en python: compléter les données complètes en fonction des résultats réels de la requête
  8. python对excel进行分组但不进行聚合统计操作,且输出到不同的表格中?
  9. Python regroupe Excel, mais n'effectue pas de statistiques agrégées, et l'affiche dans différents tableaux.
  10. python如何提交,不要用太复杂的函数
  11. Comment soumettre Python sans utiliser de fonctions trop complexes
  12. Python,数据文件操作问题,想要代码
  13. python 提取多个字符串中的多个字段
  14. python 读入用户输入的一组正整数,到-1结束
  15. Python lit un ensemble d'entiers positifs entrés par l'utilisateur, se terminant par - 1
  16. 测试逐飞的MM32F3277 MicroPython开发板的基本功能
  17. Python timer reference
  18. 关于#python#的问题:python3队列维护
  19. Developing Hongmeng equipment program using python (3-prototype of security system)
  20. Questions sur # # Python #: maintenance de la file d'attente Python 3
  21. 怎么用Python打印数字三角
  22. 怎麼用Python打印數字三角
  23. Comment imprimer un triangle numérique en python
  24. Tester la fonctionnalité de base du tableau de développement microspython mm32f3277 Flying - by - flying
  25. Python extrait plusieurs champs de plusieurs chaînes
  26. Pandas核心用法
  27. Utilisation centrale de pandas
  28. Python, problème de fonctionnement du fichier de données, Code désiré
  29. 【78技术人社群~Python分部】,就在今天成立 →
  30. 社区共读《Python编程从入门到实践》第一天阅读建议
  31. La communauté lit les recommandations de lecture pour la première journée de la programmation Python de l'introduction à la pratique
  32. [78 Communauté des technologues ~ Division Python], fondée aujourd'hui →
  33. Pandas核心用法
  34. 您好,请问您的python按钮开了线程处理还卡ui的问题解决了吗
  35. Python: résolution d'exemples, je ne sais pas comment attendre que tous les chiffres soient entrés avant de sortir
  36. Bonjour, puis - je vous demander si votre bouton Python est activé pour le traitement du thread et le retour de l'interface utilisateur de la carte a été résolu?
  37. Utilisation centrale de pandas
  38. Python technique 2: advanced usage of function parameters
  39. OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)
  40. OpenCV-Python實戰(14)——人臉檢測詳解(僅需6行代碼學會4種人臉檢測方法)
  41. OpenCV - Python Real play (14) - face detection details (six lignes de code seulement pour apprendre 4 méthodes de détection de visage)
  42. 你好,python开发mes系统,能分享下吗,我最近也想搞这方面的
  43. 你好,python開發mes系統,能分享下嗎,我最近也想搞這方面的
  44. Bonjour, Python a développé mon système, pouvez - vous le partager?
  45. Introduction to tuples in Python
  46. Introduction to strings in python (Part 2)
  47. Introduction to strings in python (Part 1)
  48. python关于 if 的简单操作时,输出结果不是预期所要的结果 的问题
  49. python關於 if 的簡單操作時,輸出結果不是預期所要的結果 的問題
  50. Lorsque Python fonctionne simplement sur if, la sortie n'est pas le résultat attendu
  51. Python中字典问题请求解惑
  52. Python中字典問題請求解惑
  53. Demande de résolution de problèmes de dictionnaire en python
  54. Python中字典问题请求解惑
  55. Python technique 2: advanced usage of function parameters
  56. Demande de résolution de problèmes de dictionnaire en python
  57. Preliminary Knowledge - Python Core use Common Data Analysis Library (ⅱ)
  58. 关于python的代码问题,终端打印为什么会起飞
  59. En ce qui concerne les problèmes de code Python, pourquoi l'impression du terminal décolle - t - elle?
  60. Python中种子seed的运用问题