pyse renombrado a rara vez
Marco de prueba de automatización WebUI basado en Selenium y unittest.
Marco de pruebas de automatización de la interfaz de usuario web basado en selenium y unittest.
características
- Proporcione una API más simple para escribir pruebas automatizadas.
- Proporcione andamios para generar rápidamente proyectos de prueba automatizados.
- Genere automáticamente la generación de informes de prueba HTML.
- Método de afirmación autónomo, título de afirmación, URL y texto.
- Soporte para parametrización de casos de uso.
- Admite la repetición de la ejecución de la falla del caso de uso.
- Captura de pantalla de error/fallo de caso de uso.
Instalar
> pip install seldom
Si desea mantenerse al día con la última versión, puede instalar con la URL del repositorio de github:
> pip install -U git+https://github.com/defnngj/seldom.git@master
Inicio rápido
1. Ver ayuda:
> 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. Crea un proyecto:
>seldom --startproject mypro
3. Estructura del directorio:
mypro/
├── test_dir/
│ ├── test_sample.py
├── report/
└── run.py
test_dir/
El catálogo implementa la escritura de casos de uso.report/
El directorio almacena los informes de prueba generados.run.py
archivo para ejecutar los casos de prueba.
3. Ejecute el proyecto:
> 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. Ver el informe
Puede ir al mypro\reports\
directorio para ver el informe de la prueba.
Documentos API
demostración sencilla
Por favor vea demo/test_sample.py
el archivo
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")
ilustrar:
- Para crear una clase de prueba debe heredar
seldom.TestCase
. - Los nombres de los archivos de casos de prueba deben
test
comenzar con . - Rara vez encapsula métodos de aserción como
assertTitle
,assertUrl
y .assertText
método principal()
import seldom
# ...
if __name__ == '__main__':
seldom.main(path="./",
browser="chrome",
title="百度测试用例",
description="测试环境:chrome",
debug=False,
rerun=0,
save_last_run=False
)
ilustrar:
- ruta: especifica el directorio o archivo de prueba.
- navegador: Especifique el navegador de prueba, el predeterminado
Chrome
. - title: especifica el título del informe de prueba.
- description : especifica la descripción del informe de prueba.
- depuración: modo de depuración, establecido en Verdadero para no generar pruebas HTML de prueba, predeterminado en
False
. - reejecutar: Establezca el número de reejecuciones en caso de falla, el valor predeterminado es
0
. - save_last_run: configurado para guardar solo el último resultado, el valor predeterminado es
False
.
Ejecutar la prueba
import seldom
seldom.main(path="./") # 当前目录下的所有测试文件
seldom.main(path="./test_dir/") # 指定目录下的所有测试文件
seldom.main(path="./test_dir/test_sample.py") # 指定目录下的测试文件
seldom.main(path="test_sample.py") # 指定当前目录下的测试文件
ilustrar:
- Si se especifica un directorio, el archivo de prueba debe
test
comenzar con . - Si desea ejecutar los archivos en el subdirectorio, debe agregar los archivos en el subdirectorio
__init__.py
.
Navegadores y controladores compatibles
Si desea especificar que los casos de prueba se ejecuten en diferentes navegadores, es muy simple, solo necesita pasar la configuración de parámetros en seldom.main()
el método .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模式
Diferentes direcciones de descarga del controlador del navegador:
geckodriver(Firefox): Lanzamientos · mozilla/geckodriver · GitHub
Controlador Chrome (Cromo): https://sites.google.com/a/chromium.org/chromedriver/home
IEDriverServer (IE): http://selenium-release.storage.googleapis.com/index.html
operadriver(Opera): Lanzamientos · operasoftware/operachromiumdriver · GitHub
MicrosoftWebDriver(Edge): Microsoft Edge WebDriver - Desarrollador de Microsoft Edge
================================================== === ========
posicionamiento del elemento
<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">
Orientación:
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")
Casos de prueba parametrizados
rara vez admite casos de prueba parametrizados e integra parametrizados .
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+"_百度搜索")
patrón de diseño de objetos de página
rara vez es compatible con el patrón de diseño de objetos de página y se puede usar con 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 proporciona funciones más útiles para facilitar la creación de la capa de página.