Marco de prueba de automatización de la interfaz de usuario web

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.

Supongo que te gusta

Origin blog.csdn.net/nhb687095/article/details/129749712
Recomendado
Clasificación