Marchandises sèches enroulées, tests d'automatisation Web au niveau de l'entreprise dans la pratique (3)


avant-propos

Solution de test automatisé au sélénium

Solution de base :
utiliser unittest, principalement TestCase (cas de test );
utiliser la modularisation (modularisation de base, extraction de modules communs) ;
utiliser des méthodes basées sur les données (comprenant principalement des formulaires de base de données et la lecture de fichiers) ;

Personnalisez les cas d'utilisation qui doivent être testés, utilisez unittest, utilisez principalement TestSuite (suite de tests) et TextTestRunner (testeur de texte) [ou HTMLTestRunner]

Générer un rapport de test (envoyer le rapport à la boîte aux lettres spécifiée)

La mise en œuvre concrète du plan

Utilisez PyCharm pour créer un nouveau projet PurePython
Créez le dossier suivant (paquet python) dans le projet

TestCase
Data
Common
TestRunner
Report

Implémentez les modules ci-dessus respectivement
Stockez les données dans les données, les fichiers CSV, ou mettez-les dans les données, utilisez le lecteur de données

## 使用csv文件
csv.reader()

## 使用数据库(MySQL),可以参考www.imooc.com的python操作MySQL的视频
cur.fetchall()

En commun, créez un module commun de test pour réaliser des opérations modulaires

## __init__(self, driver: webdriver.Firefox, base_url)
self.common = RanzhiCommon(self.driver, self.base_url)

Créez des cas de test automatisés dans TestCase, faites attention à utiliser unittest.TestCase

def setUp()
def tearDown()
det test_xxx()

Créez des exécuteurs de tests et des suites de tests dans TestRunner, en utilisant unittest.TestSuite et HTMLTestRunner (tierce partie)

test_suite = unittest.TestSuite()
test_suite.addTest(RanzhiLogonTc01("test_xxx"))
html_test_runner = HTMLTestRunner(stream=report_file, title="xxx", description="dddd)
html_test_runner.run(test_suite)

Créez main.py dans le répertoire racine du projet comme entrée principale du projet de test et exécutez le test.
Vérifier le rapport de test

Problèmes possibles avec Selenium

<iframe>cadre

f1 = find_element_by_css_selector(frame)
switch_to.frame(f1)

<select>boîte déroulante

s1 = find_element_by_css_selector(select)
ss1 = Select(s1)
ss1.select_by_index(0)
ss1.select_by_value("人事部")

Problème d'encodage utf-8
problème de temps d'attente sleep(5)

cadre de test unitaire

Test de l'unité

unittest.TestCase étapes du processus de test de nettoyage
des conditions préalables assert assertEqual (valeur attendue, résultat réel, message d'erreur)


Exécutez la méthode qui commence par test_

unittest.TestSuite
addTest(xxx("test_batch_login"))

Ajouter des cas de test personnalisés et exécuter

unittest.TextTestRunner
run(suite)

Exécuter les suites de tests créées et maintenues

test_runner test_suite test_case

Scénarios de test de la suite de tests de l'exécuteur de tests

Opération modulaire :
pratique orientée objet :
écrire une classe, qui décrit des méthodes publiques,
instancier cette classe, appeler la méthode de cette classe ;

Le constructeur de la classe doit passer webdriver.Firefox()

self.common = RanzhiCommon(self.browser, self.base_url)

Test basé sur les données :
lisez csv, bouclez chaque ligne de données à exploiter,
lisez MySQL et enregistrez le cas d'utilisation dans MySQL

Problème d'encodage chinois

# coding="utf-8"

Lors de la lecture de csv, ajoutez encoding='utf-8'

csv.reader(open("xxx.csv", "r",1, encoding="utf-8")

Boucle vers la couche la plus externe


Le problème selon lequel le chemin du fichier ne peut pas être lu dans la console doit utiliser un chemin absolu pour pointer vers le fichier.

Éviter la menace de code tiers et empêcher la modification massive
des cas de test Économiser les coûts de main-d'œuvre (s'il est packagé, chaque ingénieur de test automatisé n'a pas besoin de connaître WebDriver)
Standardiser le fonctionnement des cas d'utilisation automatisés, il suffit d'appeler des modules standard publics .

Ce qui suit est le diagramme de système d'architecture de connaissances d'ingénieur de test logiciel le plus complet en 2023 que j'ai compilé

1. De l'entrée à la maîtrise de la programmation Python

Veuillez ajouter une description de l'image

2. Combat réel du projet d'automatisation de l'interface

Veuillez ajouter une description de l'image

3. Combat réel du projet d'automatisation Web

Veuillez ajouter une description de l'image

4. Combat réel du projet d'automatisation des applications

Veuillez ajouter une description de l'image

5. CV des fabricants de premier rang

Veuillez ajouter une description de l'image

6. Tester et développer le système DevOps

Veuillez ajouter une description de l'image

7. Outils de test automatisés couramment utilisés

Veuillez ajouter une description de l'image

Huit, test de performance JMeter

Veuillez ajouter une description de l'image

9. Résumé (petite surprise à la fin)

Si vous voulez atteindre le sommet de la vie, ne laissez pas la paresse et la peur devenir des obstacles ! Mettez de côté vos doutes, lâchez vos chaînes et faites un pas courageux en avant. Ce n'est qu'en osant prendre des risques et en persévérant dans la lutte que nous pourrons créer notre propre éclat !

Tant qu'une flamme ferme est allumée dans le cœur, tout défi peut être surmonté ; si vous continuez à travailler dur, vous récolterez éventuellement des fruits abondants ; sur le chemin de la poursuite de vos rêves, la persévérance est le seul chemin vers le succès.

Ce n'est qu'en faisant de votre mieux que vous pourrez dépasser la limite ; ce n'est qu'en persistant dans la lutte que vous pourrez créer de l'éclat ; ce n'est qu'en n'abandonnant jamais que vous pourrez poursuivre vos rêves ; avancez courageusement et travaillez dur pour laisser votre futur moi vous émouvoir !

Je suppose que tu aimes

Origine blog.csdn.net/csdnchengxi/article/details/131641221
conseillé
Classement