Table des matières : Introduction
-
- Préface
- 1. Programmation Python de l'entrée à la maîtrise
- 2. Mise en œuvre pratique de projets d'automatisation d'interface
- 3. Combat réel du projet d'automatisation Web
- 4. Mise en œuvre pratique du projet d'automatisation des applications
- 5. CV des fabricants de premier rang
- 6. Tester et développer le système DevOps
- 7. Outils de tests automatisés couramment utilisés
- 8. Test de performances du JMeter
- 9. Résumé (petite surprise à la fin)
Préface
Pour les tests automatisés utilisant Python combinés avec le framework Unittest, sachez que dans Unittest, il existe deux méthodes : setUp() et tearDown(), qui sont des pré- et post-opérations.
Habituellement, setUp() est principalement utilisé pour la préparation des tests, tandis que TearDown() est principalement utilisé pour le nettoyage des données après les tests.
Dans HttpRunner, nous pouvons implémenter setUp() et TearDown() via le mécanisme de hook.
scénarios de test
Nous utiliserons une interface de connexion pour illustrer. L'exemple complet de format YAML est le suivant :
- config:
name: login test
request:
base_url: http://api.nnzhp.cn
- test:
name: login case 1
request:
url: /api/user/login
method: POST
headers:
Content-Type: application/x-www-form-urlencoded
User-Agent: Fiddler
data:
username: test1010
passwd: aA123456
validate:
- eq: [status_code, 200]
- eq: [content.error_code, 0]
- test:
name: login case 2
request:
url: /api/user/login
method: POST
headers:
Content-Type: application/x-www-form-urlencoded
User-Agent: Fiddler
data:
username: test1010
passwd: aA123456
validate:
- eq: [status_code, 200]
- eq: [content.error_code, 0]
Pour la définition de la fonction hook,nous l'écrivons généralement dans debugtalk.py, puis appelons directement la fonction hook dans le scénario de test.Par exemple, je fais les préparations suivantes dans debugtalk.py :
def hook_setup():
print("开始--------hook_setup")
def hook_teardown():
print("结束--------hook_teardown")
Utiliser des hooks dans la configuration
Si vous utilisez le mécanisme de hook dans HttpRunner, les mots-clés setup_hooks et teardown_hooks seront utilisés et ne seront exécutés qu'une seule fois dans le cas d'utilisation actuel de YAML/JSON.
setup_hooks : déclenche la fonction hook avant que l'ensemble du cas d'utilisation ne commence à s'exécuter, principalement utilisé pour le travail de préparation.
Teardown_hooks : la fonction hook est déclenchée après l'exécution de l'intégralité du cas d'utilisation, principalement utilisée pour le nettoyage après les tests.
Introduisez hook dans la configuration et modifiez-le comme suit :
- config:
name: login test
request:
base_url: http://api.nnzhp.cn
setup_hooks:
- ${
hook_setup()}
teardown_hooks:
- ${
hook_teardown()}
Ensuite, exécutez le cas d'utilisation et obtenez les résultats suivants :
D'après l'exécution du cas d'utilisation ci-dessus, nous pouvons voir qu'un total de 2 cas d'utilisation ont été exécutés, et hook_setup() et hook_teardown() dans debugtalk.py n'ont été exécutés qu'une seule fois. En effet, dans la configuration, la portée du mécanisme de hook est l'ensemble du cas d'utilisation de YAML.
Utiliser des hooks dans les tests
En test, nous pouvons également utiliser les mots-clés setup_hooks et teardown_hooks. Ici, sa portée est pour le test en cours. Si nous avons plusieurs tests, il sera exécuté plusieurs fois.
setup_hooks : exécute la fonction hook avant d'envoyer la requête HTTP, principalement utilisée pour le travail de préparation ; elle peut également prétraiter le contenu de la requête.
Teardown_hooks : exécute la fonction hook après l'envoi de la requête HTTP, principalement utilisée pour le nettoyage après les tests ; elle peut également modifier la réponse, comme le cryptage et le déchiffrement.
Nous pouvons ajouter la fonction de transmission de paramètres à la fonction dans debugtalk.py, et simplement la modifier comme suit :
def hook_setup(request=""):
print("开始--------hook_setup")
print("request请求:{}".format(request))
def hook_teardown(response=""):
print("结束--------hook_teardown")
print("response响应:{}".format(response))
Nous pouvons imprimer et traiter la requête et la réponse ici, puis introduire des hooks respectivement dans les deux tests, comme suit :
- config:
name: login test
request:
base_url: http://api.nnzhp.cn
- test:
name: login case 1
省略部分内容
setup_hooks:
- ${
hook_setup($request)}
teardown_hooks:
- ${
hook_teardown($response)}
省略部分内容
- test:
name: login case 2
省略部分内容
setup_hooks:
- ${
hook_setup($request)}
teardown_hooks:
- ${
hook_teardown($response)}
省略部分内容
À ce stade, nous exécutons à nouveau le cas d’utilisation et obtenons les résultats suivants :
En comparant les résultats précédents, nous pouvons constater que les setup_hooks et Teardown_hooks du test sont destinés à un seul test.
Choses à noter
Lorsque nous utilisons le mécanisme de hook, nous devons prêter attention à une chose. Dans le test ci-dessus, nous avons utilisé des teardown_hooks, qui sont exécutés avant de renvoyer le résultat final. Nous ne pouvons pas transmettre les données extraites du résultat de la réponse en tant que paramètre à hook_teardown. fonction.
Nous devons simplement modifier le cas d'utilisation de YAML et apporter les modifications suivantes au deuxième test :
- test:
name: login case 2
省略部分内容
extract:
- sign: content.login_info.sign
setup_hooks:
- ${
hook_setup($request)}
teardown_hooks:
- ${
hook_teardown($sign)}
省略部分内容
Nous extrayons le signe dans le résultat renvoyé via extract, le transmettons à hook_teardown(), puis exécutons le cas d'utilisation.
Le résultat ci-dessus nous indique que le paramètre sign est introuvable, car teardown_hooks est traité avant le retour des données finales, tandis que l'opération d'extraction est traitée après le retour des données.
Ce qui suit est le diagramme de système d'architecture de connaissances d'apprentissage d'ingénieur de tests logiciels le plus complet en 2023 que j'ai compilé. |
1. Programmation Python de l'entrée à la maîtrise
2. Mise en œuvre pratique de projets d'automatisation d'interface
3. Combat réel du projet d'automatisation Web
4. Mise en œuvre pratique du projet d'automatisation des applications
5. CV des fabricants de premier rang
6. Tester et développer le système DevOps
7. Outils de tests automatisés couramment utilisés
8. Test de performances du JMeter
9. Résumé (petite surprise à la fin)
Allumez la passion, surmontez les obstacles et luttez pour poursuivre vos rêves. N'ayez pas peur des difficultés, persévérez et utilisez vos efforts pour peindre un tableau glorieux. Croyez en votre estime de soi et mettez les voiles. Chaque lutte est le moteur de la croissance. Tant que vous avez du courage, vous créerez sûrement votre propre vie brillante.
Gardez les pieds sur terre, poursuivez vos rêves et récoltez le parfum de la vie à travers la lutte. Relevez les défis, dépassez-vous et écrivez courageusement un chapitre glorieux. Croyez en vos propres capacités, brûlez votre enthousiasme, éclairez la voie à suivre avec de la sueur et un travail acharné et réalisez un avenir glorieux.
Surmonter les obstacles, rechercher l’excellence et lutter sont le chemin de la réussite personnelle. Avancez courageusement, persévérez et utilisez votre sueur pour créer une scène glorieuse. Croyez aux possibilités infinies et ayez foi.