testproject python sdk tutorial
Tutoriel TestProject Python SDK: Boostez vos tests existants basés sur Selenium et AppiumCe didacticiel vous aidera à démarrer avec TestProject Python SDK. Apprenez à installer, configurer et utiliser les fonctionnalités les plus puissantes du SDK:
Selenium et Appium font partie des frameworks de test open source les plus populaires pour les navigateurs de bureau et les tests mobiles depuis des années.
La Kit de développement logiciel (SDK) TestProject Python s'appuie sur ces outils et ils vous fournissent la puissance de la plate-forme TestProject, vous offrant de superbes rapports HTML et PDF sur leurs plates-formes de rapports, la détection automatique du navigateur, la configuration des pilotes et bien plus encore.
Et la meilleure chose est que l'utilisation de la plate-forme TestProject et du SDK est totalement gratuite, pour toujours. Le SDK est également open-source, donc si vous souhaitez contribuer au projet, vous pouvez!
Ce que vous apprendrez:
Qu'est-ce que le SDK TestProject Python?
Dans ce didacticiel, vous découvrirez comment démarrer avec le SDK TestProject Python, comment tirer parti de la plate-forme TestProject avec vos tests Selenium et Appium existants, ainsi que comment utiliser certaines des fonctionnalités les plus puissantes du SDK.
Remarque : Vos tests sont-ils écrits dans un langage autre que Python? Ne vous inquiétez pas, TestProject propose également des SDK pour Java et C #, avec d'autres langages à venir dans un proche avenir.
Installation et configuration
=> Visitez cette page pour vous inscrire gratuitement à TestProjectLe SDK Python est disponible sur PyPI , l'index du package Python. Ici, nous supposons que vous avez une installation Python fonctionnelle, tout ce que vous avez à faire est d'installer le SDK et pour cela, vous devez exécutez la commande suivante:
pip install testproject-python-sdk
Cela installera le SDK et ses dépendances requises, y compris Selenium et le client Python Appium.
Avant de pouvoir commencer à utiliser le SDK, nous devons faire deux autres choses.
# 1) Installez et configurez l'Agent TestProject sur votre machine:
L'agent TestProject est responsable de l'installation et de la configuration du pilote de navigateur, ainsi que de l'envoi des rapports générés par le SDK à la plate-forme TestProject.
Après avoir créé un compte sur le TestProject plate-forme (encore une fois, c'est gratuit), vous pouvez télécharger votre agent.
Après le téléchargement, vous devrez l'installer et le démarrer. Par défaut, l'agent s'exécute sur http: // localhost: 8585. Si vous souhaitez exécuter l'agent sur un port différent, ou même sur une machine entièrement différente, ce n'est pas un problème. Dans ce cas, il vous suffit de spécifier l'adresse correcte de l'agent dans une variable d'environnement TP_AGENT_URL pour indiquer au SDK où il s'exécute.
# 2) Obtenez et configurez un jeton de développeur:
Pour communiquer avec l'agent, vous aurez également besoin d'un jeton de développeur. Après avoir installé l'agent, vous pouvez obtenir votre jeton de développement sur le site de la plate-forme TestProject, comme indiqué dans l'image ci-dessous.
Spécifiez votre jeton de développeur dans une variable d'environnement TP_DEV_TOKEN pour en informer le SDK. Alternativement, vous pouvez le spécifier comme argument lorsque vous créez une nouvelle session de pilote, comme nous le verrons dans un instant.
Une fois que vous avez téléchargé le SDK, installé, configuré et démarré l'agent, obtenu et configuré votre jeton de développeur, vous êtes prêt à commencer.
Création de notre premier test de sélénium basé sur un projet
Supposons que nous ayons un test basé sur Selenium qui accède à l'application Web de démonstration TestProject. Il fournit les informations de connexion et vérifie que nous sommes accueillis pour indiquer que l'action de connexion s'est terminée avec succès. Supposons également que nous utilisons le framework de test unitaire Pytest pour exécuter ce test et exécuter les assertions.
Un tel test pourrait ressembler à ceci:
from selenium import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.get('https://example.testproject.io/web/') driver.find_element_by_id('name').send_keys('John Smith') driver.find_element_by_id('password').send_keys('12345') driver.find_element_by_id('login').click() assert driver.find_element_by_id('greetings').is_displayed() is True driver.quit()
L'exemple ci-dessus utilise Chrome comme navigateur. Outre Chrome, le SDK prend également en charge les navigateurs de bureau suivants:
- Firefox
- Bord
- Internet Explorer
- Safari
Pour cet exemple, nous n'avons utilisé aucun des modèles d'abstraction courants dans les tests basés sur Selenium, tels que les objets de page, mais si vous les utilisez, cela ne pose aucun problème. En fait, nous le recommandons, car cela crée une séparation claire entre votre flux de test (actions, données de test) et les détails d'implémentation de vos pages Web (localisateurs d'éléments).
Une fois toutes les étapes d'installation et de configuration indiquées ci-dessus terminées, tout ce que vous avez à faire pour transformer ce test en test alimenté par TestProject est de remplacer l'instruction d'importation comme expliqué ci-dessous.
from selenium import webdriver
Relacez avec celui-ci:
from src.testproject.sdk.drivers import webdriver
C'est tout! Une fois que vous avez exécuté le test maintenant, le SDK demandera une instance de pilote à l'agent TestProject et l'utilisera pour exécuter le test. Il enverra également des instructions de rapport à la plate-forme TestProject, qui seront ensuite utilisées pour créer des rapports HTML. Jetons un coup d'œil à ceux-ci!
Inspection des rapports sur la plate-forme TestProject
En accédant au TestProject et en sélectionnant les options «Rapports» dans le menu, vous pouvez voir qu’un nouveau rapport a été créé pour le test que nous venons d’exécuter. Reportez-vous à l'image ci-dessous.
questions et réponses aux tests écrits d'analyste d'affaires
Comme vous pouvez le voir, le SDK a automatiquement déduit un nom de projet ( software_testing_help ), un nom de poste ( exemples ) et un nom de test ( test_login_to_testproject_example_app ) et les a utilisés lors de la création du rapport. Ceci est pris en charge à la fois pour Pytest et Unittest, ainsi que pour les tests qui ne sont pas exécutés à l'aide d'un cadre de test unitaire dédié.
Nous verrons comment spécifier les noms de projet, de mission et de test personnalisés, ainsi qu'un certain nombre d'autres options de rapport utiles dans la section suivante.
Toutes les commandes du pilote qui ont été exécutées pendant le test sont automatiquement ajoutées au rapport, avec leur résultat. TestProject génère également des aperçus et des tableaux de bord prêts à l'emploi.
Options de personnalisation des rapports avec TestProject
Alors que TestProject génère des rapports riches et utilisables prêts à l'emploi, il existe un certain nombre de façons de les personnaliser pour mieux répondre à vos besoins en informations.
Comme nous l'avons vu dans l'exemple précédent, TestProject est capable de déduire automatiquement les noms de projet, de travail et de test pour les frameworks de test unitaire Python les plus populaires. Si vous souhaitez utiliser des noms personnalisés dans vos rapports, vous pouvez également le faire de deux manières différentes.
# 1) Utiliser un décorateur
Le SDK TestProject comprend également un @rapport décorateur que vous pouvez utiliser pour décorer vos méthodes de test et que vous pouvez utiliser pour spécifiez les noms de projet, de travail et de test personnalisés comme indiqué ci-dessous:
from src.testproject.sdk.drivers import webdriver from src.testproject.decorator import report @report(project='Software Testing Help', job='SDK Examples', test='Login Test') def test_login_to_testproject_example_app(): driver = webdriver.Chrome() # the rest of the test method remains unchanged
Lorsque nous exécutons cette méthode de test décorée et inspectons les rapports, nous pouvons voir que les noms spécifiés ont été utilisés dans le rapport généré, au lieu des noms automatiquement déduits.
# 2) Spécification des noms de projet et de travail dans le constructeur du pilote et rapport d'un test manuellement:
Les noms de projet et de travail peuvent également être remplacés en les spécifiant dans le constructeur de l'objet pilote. Cela peut être fait comme suit:
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome(projectname='Software Testing Help', jobname='SDK Examples') # the rest of the test method remains unchanged
Si vous souhaitez remplacer le nom du test automatiquement déduit, vous pouvez signaler un test manuellement à la fin du test, comme ceci:
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome(projectname='Software Testing Help', jobname='SDK Examples') driver.get('https://example.testproject.io/web/') driver.find_element_by_id('name').send_keys('John Smith') driver.find_element_by_id('password').send_keys('12345') driver.find_element_by_id('login').click() assert driver.find_element_by_id('greetings').is_displayed() is True driver.report().test(name='Login Test', passed=True) driver.quit()
Si vous choisissez d'utiliser l'option de rapport manuel, vous devez désactiver le rapport automatique des tests (qui est activé par défaut), pour vous assurer que les tests ne sont pas signalés deux fois, ce qui corromprait votre rapport et vos tableaux de bord.
Vous pouvez désactiver les rapports automatiques à l'aide de la commande suivante:
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.report().disable_auto_test_reports(disabled=True) # the rest of the test method remains as above
Cela donnera au rapport le même aspect que la dernière capture d'écran ci-dessus.
# 3) Désactivation du rapport des commandes du pilote
Si vous ne souhaitez pas que votre rapport contienne toutes les commandes de pilote individuelles exécutées pendant le test, vous pouvez désactiver le rapport automatique de celles-ci comme suit:
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.report().disable_command_reports(disabled=True) # the rest of the test method remains unchanged
Vous pouvez également réactiver le rapport de commande du pilote plus tard dans vos tests en appelant à nouveau la même méthode mais avec l'argument désactivé = False.
Si vous souhaitez toujours signaler certaines étapes intermédiaires lors de votre test, vous pouvez également le faire:
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.report().disable_command_reports(disabled=True) driver.report().step(description='An intermediate step', message='A custom message', passed=True, screenshot=True) # here goes the rest of the test method
Comme vous pouvez le voir, vous pouvez même ajouter des captures d'écran aux étapes de votre rapport personnalisé. Ceux-ci seront automatiquement intégrés dans le rapport HTML sur la plateforme TestProject.
Le SDK TestProject offre plus d'options pour personnaliser davantage vos rapports. Consultez la documentation officielle sur le site Web de TestProject, GitHub ou PyPI pour un aperçu complet.
Exécution de tests basés sur Appium à l'aide de TestProject
Outre les tests basés sur Selenium, le SDK TestProject peut également exécuter des tests sur des appareils mobiles à l'aide d'Appium. Prenons cet exemple en cours d'exécution sur une application Android native sur un émulateur:
from appium import webdriver def test_native_android_app(): desired_capabilities = { 'appActivity': 'io.testproject.demo.MainActivity', 'appPackage': 'io.testproject.demo', 'udid': '', 'browserName': '', 'platformName': 'Android', } driver = webdriver.Remote(desired_capabilities=desired_capabilities) driver.find_element_by_id('name').send_keys('John Smith') driver.find_element_by_id('password').send_keys('12345') driver.find_element_by_id('login').click() assert driver.find_element_by_id('greetings').is_displayed() driver.quit()
Pour utiliser la puissance de la plateforme TestProject ici, encore une fois, il suffit de changer
from appium import webdriver
À:
from src.testproject.sdk.drivers import webdriver
Et nous sommes prêts à partir. L'agent TestProject fait également office de serveur Appium, il n'est donc plus nécessaire de l'exécuter vous-même sur la machine qui exécute vos tests.
Toutes les fonctionnalités de rapport décrites ci-dessus sont également disponibles pour les tests basés sur Appium.
Le SDK prend en charge l'exécution de tests mobiles:
- Pour Android et iOS.
- Sur les émulateurs ainsi que sur les vrais appareils.
- Sur les applications natives ainsi que sur les navigateurs mobiles
Des exemples de tout cela peuvent être trouvés dans le référentiel de code du SDK sur GitHub.
Conclusion
Comme vous l'avez vu dans ce didacticiel, le SDK TestProject Python peut vous aider à suralimenter vos tests existants basés sur Selenium et Appium en supprimant les tâches de configuration de vos pilotes de navigateur et de votre serveur Appium, et il génère d'excellents rapports HTML et tableau de bord la plateforme TestProject.
Mieux encore, le SDK TestProject Python est absolument gratuit.
=> Rendez-vous TestProject pour l'essayer par vous-même !
A propos de l'auteur: Bas Dijkstra
L'auteur enseigne aux entreprises du monde entier comment améliorer leurs efforts de test grâce à l'automatisation des tests. Il est formateur, consultant et développeur indépendant vivant aux Pays-Bas. Dans son temps libre, il aime faire un tour à vélo, courir ou lire un bon livre.
lecture recommandée
- Tutoriel de révision pratique de TestProject Test Automation Tool
- Processus d'introduction et d'installation de Python
- Créer des tests Appium pour une application Android
- Tutoriel Python pour les débutants (formation pratique gratuite sur Python)
- Exécution de vos tests Appium en parallèle à l'aide d'Appium Studio pour Eclipse
- Création de tests d'epochs à l'aide d'epochs Studio for Eclipse
- Comment exécuter une exécution à grande échelle de tests Appium en parallèle
- Intégrez-vous à votre IDE pour exécuter vos tests Appium