Introduction et application du cadre de test automatisé RobotFramework compilé par l'ingénieur de dix ans de Byte

Table des matières

1. Conception

Deux, caractéristiques

3. Installation de l'environnement RF

Quatrièmement, l'utilisation de RF

Cinq, bibliothèque de classe commune RF

Six, l'utilisation de mots-clés communs en RF

7. Préparer l'environnement pour les tests d'automatisation de l'interface utilisateur

8. Mot-clé pour le fonctionnement du navigateur

9. Positionnement des éléments

10. La structure à trois niveaux du projet

11. Mode RF non-GUI (ligne de commande) en cours d'exécution et intégration Jenkins

1. Conception

Qu'est-ce que Robot Framework ?

Robot Framework est un framework de test d'automatisation fonctionnelle écrit en python. Il a une bonne évolutivité, prend en charge les mots-clés, peut tester plusieurs types de clients ou d'interfaces en même temps et peut effectuer une exécution de test distribuée. Principalement utilisé pour les tests d'acceptation et le développement piloté par les tests d'acceptation (ATDD) avec de nombreuses séries.
 

Deux, caractéristiques

1. Les cas de test sont enregistrés dans des fichiers texte (fichiers TXT ou TSV) et des onglets sont utilisés pour séparer les données. Vous pouvez facilement utiliser n'importe quel éditeur de texte ou EXCEL pour modifier les cas de test. Les cas d'utilisation peuvent également être créés au format HTML.

2. L'utilisation de variables est prise en charge dans les cas de test, et les instructions IF et FOR loop peuvent être utilisées.

3. Vous pouvez utiliser la fonction "label" pour classer et exécuter de manière sélective des cas de test.

4. Prend en charge les mots-clés, les données et les comportements.

5. À l'aide de mots-clés existants, les testeurs peuvent créer les mots-clés dont ils ont besoin pour former des comportements de niveau supérieur.

6. Les rapports d'exécution des tests et les journaux sont au format HTML, faciles à lire.

7. Robot Framework n'est pas un outil de test automatisé comme QTP. Il s'agit d'un cadre de test automatisé ou d'une plate-forme de test automatisée.

8. Fournit une interface d'écoute pour les événements d'exécution de test et peut personnaliser les scripts dans l'interface. Par exemple, avant l'exécution d'un cas d'utilisation, le script de l'interface "start_test" sera exécuté ; après l'exécution du cas d'utilisation, le script de l'interface "end_test" sera exécuté. Les testeurs peuvent personnaliser les scripts des deux interfaces "start_test" et "end_test".

9. Fournit une interface de ligne de commande et une sortie au format XML. Il peut être combiné avec des outils de gestion de version pour une intégration continue.

10. Robot Framework identifie et manipule l'objet testé via la bibliothèque de test.Il existe de nombreuses bibliothèques de test open source intégrées ou tierces. Par exemple, utilisez la bibliothèque "selenium2Library" pour tester le client Web. De plus, vous pouvez également tester le client Java, le client Win32, le terminal de caractères du protocole SSH, etc.

11. Les testeurs peuvent utiliser Python et Java pour créer leurs propres bibliothèques de test.

12. Fournit une interface d'exécution de test à distance pour l'exécution de test distribué.

Le contenu ci-dessus provient de l'encyclopédie Baidu
 

3. Installation de l'environnement RF

L'installation de l'environnement nécessite une correspondance de version. La version configurée sur mon ordinateur est actuellement valide pour les tests personnels.

1. Installez l'environnement python3.7.6 et configurez les variables d'environnement ;

2. Ouvrez la fenêtre DOS en tant qu'administrateur :

Installez robotframework : pip installez robotframework==4.1

Désinstaller en tant que pip désinstaller robotframework

3. Installez l'outil RIDE dans la fenêtre DOS. RIDE est un outil de développement pour robotframework :

Installez RIDE : pip install robotframework-ride==1.7.4.1

Désinstaller : pip désinstaller robotframework-ride

La boîte de dialogue suivante apparaîtra lors de l'installation, voulez-vous créer un raccourci sur le bureau ? , cliquez sur "Oui".

 4. Installez wxPython

Wxpython est une bibliothèque graphique très célèbre pour python, car RIDE est développé sur la base de cette bibliothèque, elle doit donc être installée.

pip installer wxPython==4.0.4

5. Installation de Selenium2Library

RF-seleniumlibrary peut être considérée comme la version RF de la bibliothèque Selenium, et Selenium (webdriver) peut être considéré comme un ensemble de spécifications Web (API). Par conséquent, des outils de test tels que RF et Appium peuvent localiser et exploiter des pages basées sur sur cet ensemble d'API.

pip installer robotframework-selenium2library

6. Double-cliquez sur l'icône pour l'ouvrir ou entrez ride.py dans la fenêtre DOS pour l'ouvrir, comme indiqué dans la figure ci-dessous après l'ouverture.

 

Problèmes rencontrés lors de l'installation

Retour de flamme rencontré ou erreur de démarrage comme suit :

 Remplacez self._initial_locale = wx.Locale(wx.LANGUAGE_ARABIC) dans le fichier application.py du répertoire ..python37\Lib\site-packages\robotide\application par self._initial_locale = wx.Locale(wx.LANGUAGE_ENGLISH)

 En cas d'autres problèmes, veuillez aider les internautes enthousiastes, la plupart des problèmes peuvent être résolus.

Quatrièmement, l'utilisation de RF

1. Créer un nouveau projet

Cliquez sur [Fichier]→[Nouveau projet], remplissez le nom du projet, le chemin et le type (fichier ou dossier) dans la fenêtre contextuelle, puis créez un nouveau dossier ici.

 

2. Créer une suite de tests

Cliquez avec le bouton droit sur le dossier, sélectionnez [Nouvelle suite], saisissez le nom de la suite de tests dans la fenêtre contextuelle et sélectionnez Fichier comme type.

 

 

3. Créer des cas de test

Cliquez avec le bouton droit sur la suite de tests, sélectionnez [Nouveau cas de test] et saisissez le nom du cas de test dans la fenêtre contextuelle.

 

4. Créer des fichiers de ressources

Faites un clic droit sur le dossier, sélectionnez [Nouvelle ressource], remplissez le nom dans la fenêtre contextuelle et sélectionnez le format TXT. En règle générale, il économise les ressources de mots clés d'entreprise et est le support de mots clés personnalisés. Des mots clés définis par l'utilisateur peuvent être créés dans le fichier de ressources.

 

 

 

5. Introduction au fonctionnement des pages

[1] La page de l'onglet Modifier de la suite de tests, comme illustré dans la figure ci-dessous

  1. Paramètres des paramètres

2. Importer : importer des fichiers externes

Bibliothèque : importez une bibliothèque de classes externe, si elle est noire, cela signifie un succès, et si elle est rouge, cela signifie un échec.

Ressource : importez des fichiers de ressources, par exemple, vous pouvez importer des mots clés d'entreprise.

3. Définir les variables internes

L'ajout de variables, l'ajout d'une collection de listes et l'ajout d'un dictionnaire sont relativement rarement utilisés, et les fonctions les plus couramment utilisées sont les fonctions Bibliothèque et Ressource d'importation de fichiers externes.

4. Métadonnées

【2】Page de cas de test

 

 

Cinq, bibliothèque de classe commune RF

1. Bibliothèque standard : pas besoin d'installer, utilisez-la directement, RF est livrée avec.

Buitini (bibliothèque de tests)

Collections

DateTime (bibliothèque de temps)

ScreenShot (bibliothèque de captures d'écran)

L'emplacement de la bibliothèque standard : D:\software\python37\Lib\site-packages\robot\libraries

2. Bibliothèque étendue : besoin d'installer la bibliothèque via pip

Tests automatisés Web : SeleniumLibrary, Selenium2Library, Selenium2Library pour java, etc.

Automatisation de l'interface API : RequestsLibrary

Test automatisé APP : AppiumLibrary

Méthode d'installation:

pip installer robotframework-seleniumlibrary

pip install robotframework-demandes

pip installer robotframework-appiumlibrary

L'emplacement de la bibliothèque d'extension : D:\software\python37\Lib\site-packages\

Remarque : lors de l'importation du package, il doit être cohérent avec le nom du dossier, y compris la casse.
 

Six, l'utilisation de mots-clés communs en RF

raccourci clavier :

1. Mots-clés de recherche : F5

2. Mots clés à compléter automatiquement : ctrl+shift+espace

Lorsque nous rencontrons des mots-clés inconnus, nous pouvons découvrir comment les utiliser dans les pages ci-dessous.

 Hachoir à petite échelle

 

 

Comment	1.打印									
Log	这是一条打印语句									
Comment	2.设置变量									
${a}	Set Variable	100								
Log	${a}									
Comment	3.获取系统时间									
${times}	Get Time									
Log	${times}									
Comment	4.睡眠时间,强制等待									
sleep	3									
Comment	5.字符串的拼接									
${str}	Catenate	oracle	mysql	sqlserver						
Log	${str}									
Comment	6.创建列表									
${list1}	Create List	功能测试	自动化测试	性能测试						
Log	${list1}									
@{list2}	Create List	功能测试	自动化测试	性能测试						
Log Many	@{list2}									
Comment	7.创建字典									
${dic}	Create Dictionary	name=张三	age=18							
Log	${dic}									
Comment	7.1 获得字典的键									
${keys}	Get Dictionary Keys	${dic}								
Log	${keys}									
Comment	7.2 获得字典的值									
${values}	Get Dictionary Values	${dic}								
Log	${values}									
Comment	7.3 通过键取值									
${key_value}	Get From Dictionary	${dic}	name							
Log	${key_value}									
Comment	8.执行python里面的方法									
${random_number}	Evaluate	random.randint(1,101)	modules=random							
Log	${random_number}									
${times}	Evaluate	time.time()	modules=time							
Log	${times}									
Comment	9.执行python自定义的方法									
Import Library	E:/pythonProject/test.py									
${a}	Evaluate	int(10)								
${b}	Evaluate	int(20)								
${return_result}	sum	${a}	${b}							
Log	${return_result}									
Comment	10. 流程控制IF									
${age}	Set Variable	22								
Run Keyword If	${age}>30	Log	年龄太大,不合适	ELSE IF	18<=${age}<=30	Log	年龄正合适	ELSE	Log	未成年
Comment	11. 流程控制FOR									
FOR	${a}	IN	oracle	mysql	sqlserver					
	Log	${a}								
END										
Comment	流程控制FOR的另一种形态									
@{list3}	Create List	oracle	mysql	sqlserver						
FOR	${a}	IN	@{list3}							
	Log	${a}								
END										
Comment	流程控制FOR循环范围内的数据									
FOR	${a}	IN RANGE	1	11						
	Run Keyword If	${a}==5	Exit For Loop							
	Log	${a}								
END										
										
复制代码

Le résultat de l'exécution du code ci-dessus :

 

Starting test: TestDemo.RF测试1.TestSuit1.TestCase1
20210831 08:28:34.827 :  INFO : 这是一条打印语句
20210831 08:28:34.828 :  INFO : ${a} = 100
20210831 08:28:34.828 :  INFO : 100
20210831 08:28:34.829 :  INFO : ${times} = 2021-08-31 08:28:34
20210831 08:28:34.830 :  INFO : 2021-08-31 08:28:34
20210831 08:28:37.837 :  INFO : Slept 3 seconds
20210831 08:28:37.839 :  INFO : ${str} = oracle mysql sqlserver
20210831 08:28:37.839 :  INFO : oracle mysql sqlserver
20210831 08:28:37.840 :  INFO : ${list1} = ['功能测试', '自动化测试', '性能测试']
20210831 08:28:37.840 :  INFO : ['功能测试', '自动化测试', '性能测试']
20210831 08:28:37.841 :  INFO : @{list2} = [ 功能测试 | 自动化测试 | 性能测试 ]
20210831 08:28:37.841 :  INFO : 功能测试
20210831 08:28:37.841 :  INFO : 自动化测试
20210831 08:28:37.841 :  INFO : 性能测试
20210831 08:28:37.842 :  INFO : ${dic} = {'name': '张三', 'age': '18'}
20210831 08:28:37.843 :  INFO : {'name': '张三', 'age': '18'}
20210831 08:28:37.844 :  INFO : ${keys} = ['age', 'name']
20210831 08:28:37.844 :  INFO : ['age', 'name']
20210831 08:28:37.845 :  INFO : ${values} = ['18', '张三']
20210831 08:28:37.846 :  INFO : ['18', '张三']
20210831 08:28:37.847 :  INFO : ${key_value} = 张三
20210831 08:28:37.847 :  INFO : 张三
20210831 08:28:37.848 :  INFO : ${random_number} = 101
20210831 08:28:37.848 :  INFO : 101
20210831 08:28:37.849 :  INFO : ${times} = 1630369717.848543
20210831 08:28:37.849 :  INFO : 1630369717.848543
20210831 08:28:37.859 :  INFO : ${a} = 10
20210831 08:28:37.860 :  INFO : ${b} = 20
20210831 08:28:37.860 :  INFO : ${return_result} = 30
20210831 08:28:37.861 :  INFO : 30
20210831 08:28:37.861 :  INFO : ${age} = 22
20210831 08:28:37.862 :  INFO : 年龄正合适
20210831 08:28:37.863 :  INFO : oracle
20210831 08:28:37.864 :  INFO : mysql
20210831 08:28:37.865 :  INFO : sqlserver
20210831 08:28:37.866 :  INFO : @{list3} = [ oracle | mysql | sqlserver ]
20210831 08:28:37.867 :  INFO : oracle
20210831 08:28:37.868 :  INFO : mysql
20210831 08:28:37.869 :  INFO : sqlserver
20210831 08:28:37.871 :  INFO : 1
20210831 08:28:37.872 :  INFO : 2
20210831 08:28:37.873 :  INFO : 3
20210831 08:28:37.875 :  INFO : 4
20210831 08:28:37.876 :  INFO : Exiting for loop altogether.
Ending test:   TestDemo.RF测试1.TestSuit1.TestCase1
复制代码

7. Préparer l'environnement pour les tests d'automatisation de l'interface utilisateur

1. Installez la bibliothèque d'extension via pip : pip install robotframework-seleniumlibrary ;

2. Téléchargez Google Chrome ;

3. Téléchargez le pilote de Google Chrome (note : le pilote de Google Chrome doit être compatible avec Google Chrome), puis placez chromedriver.exe dans le répertoire python ;

4. Importez SeleniumLibrary dans la suite de tests RF ;
 

8. Mot-clé pour le fonctionnement du navigateur

 

 

Comment	打开浏览器		
Open Browser	https://www.baidu.com	chrome	
Comment	隐式等待		
Set Browser Implicit Wait	5		
sleep	2		
Comment	浏览器放大		
Maximize Browser Window			
sleep	2		
Comment	设置浏览器的尺寸		
Set Window Size	1024	768	
sleep	2		
${width}	${height}	Get Window Size	
sleep	2		
Comment	返回上一步		
Go Back			
sleep	2		
Comment	直接跳转页面		
Go To	https://www.baidu.com		
Comment	刷新页面		
Reload Page			
sleep	2		
Comment	获取title		
${title}	Get Title		
Log	${title}		
sleep	2		
Comment	获取路径		
${loc}	Get Location		
Log	${loc}		
sleep	2		
Comment	关闭浏览器		
Close Browser			
复制代码

9. Positionnement des éléments

Huit façons de localiser des éléments : id, name, link_text, partial_link_text, xpath, css, class_name, tag_name

Prérequis : les éléments doivent être uniques

Voici plusieurs façons simples de localiser par identifiant, nom, lien

 En plus des méthodes de positionnement ci-dessus, il existe deux méthodes de positionnement plus puissantes : xpath et css

Nous allons maintenant positionner la zone de texte comme suit :

 

xpath : (les éléments positionnés en dessous font partie de la page d'accueil de Baidu)

1. Par positionnement de chemin absolu, cette méthode est presque inutile.

2. Localisation par chemin relatif ://form/span/input

 3. Localisation par attribut d'élément : //input[@autocomplete="off"]ou//input[@autocomplete="off" and @class="s_ipt"]

4. Localisez à travers certains attributs : //input[starts-with(@autocomplete,"of")] ou //input[contains(@autocomplete,"of")]

5. Positionner par texte//a[text()="news"]

css : (les éléments positionnés en dessous font partie de la page d'accueil de Baidu)

1. Par positionnement de chemin absolu, cette méthode est presque inutile.

2. Position par ID ou Classe : #ID ou .class

3. Positionnement via les attributs d'élément :

Un positionnement d'attribut : input[autocomplete="off"]

Deux attributs sont positionnés en même temps : input[autocomplete="off"][class="s_ipt"]

4. Localisation grâce à certains attributs :

Par quoi commencer : input[autocomplete^="of")]

Par quoi terminer : input[autocomplete$="ff")]

Contient : input[autocomplete*="of")]

5. Localisez div#s-top-left a:nth-child(3) à travers les éléments enfants, et l'id est la troisième balise a sous s-top-left.

 

Comment traiter le cadre du cadre?

Dans les projets réels, nous constaterons qu'il y a des cadres de cadre dans de nombreux cas, et les éléments du cadre de cadre ne peuvent pas être positionnés directement et doivent sauter dans le cadre actuel avant le positionnement.

 Si vous souhaitez localiser des éléments qui ne sont pas dans le cadre, vous devez sauter hors du cadre actuel avant de continuer : Unselect Frame, comme indiqué dans la figure ci-dessous :

  La méthode de positionnement de la liste déroulante :

  Prenons l' Select From List By Valueexemple suivant :

  Ciblez l'un d'un groupe d'éléments identiques :

 

Gestion des boîtes d'alerte

Il existe généralement trois types de boîtes à puces : alerte, confirmation, invite

 

Pour traiter la boîte d'alerte de la figure ci-dessus, le mot clé est Handle Alert, si vous cliquez sur OK, vous n'avez pas besoin de passer de paramètres, si vous cliquez sur le bouton annuler, passez la valeur : DISMISS.

10. La structure à trois niveaux du projet

1. Qu'est-ce que l'architecture à trois niveaux ?

(1) Couche d'éléments de page

(2) Couche logique métier

(3) Couche de cas de test

La couche de logique métier appelle la couche d'élément de page et la couche de cas de test appelle la couche de logique métier.

2. Pourquoi la superposition et quelle est la signification ?

Réalisez une gestion centralisée des éléments de page, des méthodes publiques, des données publiques, de la logique métier et des cas de test.

Augmentez la réutilisabilité des scripts.

Maintenabilité accrue des scripts.
 

11. Mode RF non-GUI (ligne de commande) en cours d'exécution et intégration Jenkins

Commande : pybot -d chemin vers le rapport de test chemin vers le scénario de test

Opérations de base de Jenkins

1. Installer l'environnement Jenkins

(1) Installer l'environnement jdk ;

(2) Accédez au site Web officiel de Jenkins, téléchargez le fichier d'installation, double-cliquez pour installer et suivez les étapes.

 2. Configuration de Jenkins

(1) Recherchez Robot Framework dans la gestion des plug-ins et installez-le.

 (2) Créer un projet de style libre

  (3) Configurer des tâches d'exécution planifiées

  (4) Créer une commande batch Windows

 (5) Ajout du script Exécuter Groovy System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")

 (6) Ajouter des étapes d'opération post-construction

 

Je suppose que tu aimes

Origine blog.csdn.net/lzz718719/article/details/131603325
conseillé
Classement