pyse renommé rarement
Framework de test d'automatisation WebUI basé sur Selenium et unittest.
Cadre de test d'automatisation de l'interface utilisateur Web basé sur le sélénium et le test unitaire.
caractéristiques
- Fournir une API plus simple pour écrire des tests automatisés.
- Fournir un échafaudage pour générer rapidement des projets de test automatisés.
- Générez automatiquement la génération de rapport de test HTML.
- Méthode d'assertion autonome, affirmer le titre, l'URL et le texte.
- Prise en charge du paramétrage des cas d'utilisation.
- Prend en charge la réexécution de l'échec du cas d'utilisation.
- Utilisez une capture d'écran d'échec/erreur de cas.
Installer
> pip install seldom
Si vous souhaitez suivre la dernière version, vous pouvez installer avec l'URL du référentiel github :
> pip install -U git+https://github.com/defnngj/seldom.git@master
Démarrage rapide
1. Afficher l'aide :
> seldom -h
usage: seldom [-h] [-V] [--startproject STARTPROJECT] [-r R]
WebUI automation testing framework based on Selenium.
optional arguments:
-h, --help show this help message and exit
-V, --version show version
--startproject STARTPROJECT
Specify new project name.
-r R run test case
2. Créez un projet :
>seldom --startproject mypro
3. Structure du répertoire :
mypro/
├── test_dir/
│ ├── test_sample.py
├── report/
└── run.py
test_dir/
Le catalogue implémente l'écriture de cas d'utilisation.report/
Le répertoire stocke les rapports de test générés.run.py
fichier pour exécuter les cas de test.
3. Exécutez le projet :
> seldom -r run.py
Python 3.7.1
_ _
| | | |
___ ___ | | __| | ___ _ __ ___
/ __| / _ \| | / _` | / _ \ | '_ ` _ \
\__ \| __/| || (_| || (_) || | | | | |
|___/ \___||_| \__,_| \___/ |_| |_| |_|
-----------------------------------------
@itest.info
generated html file: file:///D:\mypro\reports\2019_11_12_22_28_53_result.html
.1
4. Afficher le rapport
Vous pouvez accéder au mypro\reports\
répertoire pour afficher le rapport de test.
Documents API
démo simple
Veuillez consulter demo/test_sample.py
le fichier
import seldom
class YouTest(seldom.TestCase):
def test_case(self):
"""a simple test case """
self.open("https://www.baidu.com")
self.type(id_="kw", text="seldom")
self.click(css="#su")
self.assertTitle("seldom")
if __name__ == '__main__':
seldom.main("test_sample.py")
illustrer:
- Pour créer une classe de test, il faut hériter de
seldom.TestCase
. - Les noms de fichiers de cas de test doivent
test
commencer par . - Encapsule rarement les méthodes d'assertion telles que
assertTitle
,assertUrl
et .assertText
méthode main()
import seldom
# ...
if __name__ == '__main__':
seldom.main(path="./",
browser="chrome",
title="百度测试用例",
description="测试环境:chrome",
debug=False,
rerun=0,
save_last_run=False
)
illustrer:
- path : spécifie le répertoire ou le fichier de test.
- navigateur : spécifiez le navigateur de test, la valeur par défaut
Chrome
. - title : Spécifie le titre du rapport de test.
- description : spécifie la description du rapport de test.
- debug : mode débogage, défini sur True pour ne pas générer de tests HTML de test, par défaut sur
False
. - rerun : définit le nombre de relances en cas d'échec, la valeur par défaut est
0
. - save_last_run : défini pour enregistrer uniquement le dernier résultat, la valeur par défaut est
False
.
Exécutez le test
import seldom
seldom.main(path="./") # 当前目录下的所有测试文件
seldom.main(path="./test_dir/") # 指定目录下的所有测试文件
seldom.main(path="./test_dir/test_sample.py") # 指定目录下的测试文件
seldom.main(path="test_sample.py") # 指定当前目录下的测试文件
illustrer:
- Si un répertoire est spécifié, le fichier de test doit
test
commencer par . - Si vous souhaitez exécuter les fichiers du sous-répertoire, vous devez ajouter les fichiers du sous-répertoire
__init__.py
.
Navigateurs et pilotes pris en charge
Si vous souhaitez spécifier que les cas de test s'exécutent dans différents navigateurs, c'est très simple, il vous suffit de passer des paramètres dans seldom.main()
la méthode .browser
import seldom
if __name__ == '__main__':
seldom.main(browser="chrome") # chrome浏览器,默认值
seldom.main(browser="firefox") # firefox浏览器
seldom.main(browser="ie") # IE浏览器
seldom.main(browser="opera") # opera浏览器
seldom.main(browser="edge") # edge浏览器
seldom.main(browser="chrome_headless") # chrome浏览器headless模式
seldom.main(browser="firefox_headless") # Firefox浏览器headless模式
Différentes adresses de téléchargement de pilotes de navigateur :
geckodriver(Firefox) : versions · mozilla/geckodriver · GitHub
Chromedriver (Chrome): https://sites.google.com/a/chromium.org/chromedriver/home
IEDriverServer (IE): http://selenium-release.storage.googleapis.com/index.html
operadriver(Opera) : versions · operasoftware/operachromiumdriver · GitHub
MicrosoftWebDriver (Edge): Microsoft Edge WebDriver - Développeur Microsoft Edge
================================================= === ========
positionnement des éléments
<form id="form" class="fm" action="/s" name="f">
<span class="bg s_ipt_wr quickdelete-wrap">
<input id="kw" class="s_ipt" name="wd">
Ciblage :
self.type(id_="kw", text="seldom")
self.type(name="wd", text="seldom")
self.type(class_name="s_ipt", text="seldom")
self.type(tag="input", text="seldom")
self.type(link_text="hao123", text="seldom")
self.type(partial_link_text="hao", text="seldom")
self.type(xpath="//input[@id='kw']", text="seldom")
self.type(css="#kw", text="seldom")
Cas de test paramétrés
prend rarement en charge les cas de test paramétrés et intègre les fichiers .
import seldom
from seldom import ddt
# ...
class BaiduTest(seldom.TestCase):
@ddt.data([
(1, 'seldom'),
(2, 'selenium'),
(3, 'unittest'),
])
def test_baidu(self, name, keyword):
"""
used parameterized test
:param name: case name
:param keyword: search keyword
"""
self.open("https://www.baidu.com")
self.type(id_="kw", text=keyword)
self.click(css="#su")
self.assertTitle(search_key+"_百度搜索")
modèle de conception d'objets de page
prend rarement en charge le modèle de conception des objets Page et peut être utilisé avec poium .
import seldom
from poium import Page, PageElement
class BaiduPage(Page):
"""baidu page"""
search_input = PageElement(id_="kw")
search_button = PageElement(id_="su")
class BaiduTest(seldom.TestCase):
"""Baidu serach test case"""
def test_case(self):
"""
A simple test
"""
page = BaiduPage(self.driver)
page.get("https://www.baidu.com")
page.search_input = "seldom"
page.search_button.click()
self.assertTitle("seldom_百度搜索")
if __name__ == '__main__':
seldom.main("test_po_demo.py")
poium fournit des fonctions plus utiles pour faciliter la création de la couche Page.