Marco de prueba automatizado de interfaz de usuario web (Pytest+Selenium+Allure/Pytest-html+Loguru)

1. Introducción al marco

Este marco es principalmente un marco de automatización de interfaz de usuario WEB basado en Python + pytest + selenium + pytest-html/Allure + loguru + notificación por correo electrónico/notificación WeChat empresarial/notificación DingTalk.

2. Implementar funciones

  • Basándose en la combinación de patrones de diseño de PO, la plataforma puede realizar la ejecución automatizada de casos de prueba y la generación de informes de prueba automatizados, incluidas capturas de pantalla de casos de uso fallidos durante la ejecución de pruebas automatizadas.
  • Utilice webdriver_manager para descargar webdriver automáticamente, diga adiós a la descarga manual y ya no tendrá que preocuparse por problemas con la versión de webdriver.
  • Admite la especificación de uno o más navegadores a través de la línea de comandos y se pueden ejecutar varios navegadores al mismo tiempo.
  • Admite la especificación del entorno operativo a través de la línea de comando, lo que permite cambiar de entorno con un solo clic y resuelve el problema de la interacción mutua entre múltiples entornos.
  • El uso de loguru para administrar registros puede generar registros más elegantes y concisos
  • Notificaciones de DingTalk y Enterprise WeChat: admite múltiples escenarios de notificación. Después de una ejecución exitosa, puede elegir enviar notificaciones de DingTalk, Enterprise WeChat o por correo electrónico.
  • Utilice pipenv para administrar entornos virtuales y archivos de dependencia, y podrá pipenv installinstalar paquetes de dependencia con un solo clic.
  • Elija entre una variedad de informes: el marco admite informes de prueba pytest-html y Allure, y los informes requeridos se pueden configurar dinámicamente.
  • Admite el uso de allure para establecer prioridades de casos de uso y ejecutar casos de uso con prioridades específicas.

3. Estructura del directorio

├────case_utils/
│    ├────__init__.py
│    ├────allure_handle.py
│    ├────basepage.py
│    ├────data_handle.py
│    ├────get_driver.py
│    ├────get_results_handle.py
│    ├────platform_handle.py
│    ├────send_result_handle.py
│    └────url_handle.py
├────common_utils/
│    ├────__init__.py
│    ├────base_request.py
│    ├────bs4_handle.py
│    ├────dingding_handle.py
│    ├────files_handle.py
│    ├────time_handle.py
│    ├────wechat_handle.py
│    ├────yagmail_handle.py
│    └────yaml_handle.py
├────config/
│    ├────__init__.py
│    ├────allure_config/
│    │    ├────http_server.exe
│    │    ├────logo.svg
│    │    └────双击打开Allure报告.bat
│    ├────global_vars.py
│    ├────models.py
│    ├────path_config.py
│    ├────pytest_html_config/
│    │    └────pytest_html_report.css
│    └────settings.py
├────data/
│    ├────create_project_data.py
│    └────login_data.py
├────lib/
├────outputs/
├────page/
│    ├────__init__.py
│    ├────common_page.py
│    ├────home_page.py
│    ├────login_page.py
│    └────projects/
│    │    ├────__init__.py
│    │    ├────create_project_page.py
│    │    ├────project_detail_page.py
│    │    └────projects_page.py
└────test_case/
│    ├────__init__.py
│    ├────conftest.py
│    ├────test_login.py
│    └────test_projects/
│    │    ├────__init__.py
│    │    ├────conftest.py
│    │    └────test_create_project.py
├────conftest.py
├────Pipfile
├────Pipfile.lock
├────pytest.ini
├────README.md
├────.gitignore
├────run.py

4. Bibliotecas de dependencia

jsonpath = "==0.82"
openpyxl = "==3.0.9"
pytest = "==6.2.5"
pyyaml = "==6.0"
requests = "==2.26.0"
loguru = "*"
pytest-rerunfailures = "*"
faker = "*"
deepdiff = "*"
pymysql = "*"
yagmail = "*"
selenium = "*"
pyautogui = "*"
pywinauto = "*"
pytest-html = "==2.1.1"
allure-pytest = "*"
beautifulsoup4 = "*"
webdriver-manager = "*"
requests-toolbelt = "*"

5. Tutorial de instalación

  1. Utilice la herramienta Git para clonar el código localmente o descargar directamente el paquete comprimido ZIP
git clone https://gitlink.org.cn/floraachy/uiautotest.git
  1. Configure un entorno Python en la computadora local. La versión de Python que uso es 3.9

  2. Instalar pipenv

# 建议在项目根目录下执行命令安装
pip install pipenv
  1. Utilice pipenv para administrar la instalación de paquetes de dependencia ambiental: instalación de pipenv (debe ejecutarse en el directorio raíz del proyecto)
   注意:使用pipenv install会自动安装Pipfile里面的依赖包,该依赖包仅安装在虚拟环境里,不安装在测试机。

Se ha configurado el entorno anterior, incluidos los paquetes de dependencia del marco.

6. Cómo crear casos de uso

1. Modificar el archivo de configuraciónconfig.settings.py

1) Confirme los distintos parámetros de RunConfig. Puede ajustar el número de reejecuciones fallidas reruny el intervalo entre repeticiones fallidas reruns_delay. Cuando se alcance el número máximo de fallos, la ejecución se detendrá. max_fail
2) Confirme si se envían los resultados de la prueba después de finalizar la prueba. completado. Esto está controlado por SEND_RESULT_TYPE y complete la información de configuración correspondiente del correo electrónico/DingTalk/Enterprise WeChat
3) Especifique el nivel de recopilación de registros, controlado por LOG_LEVEL

2. Modificar variables globales y agregar datos de prueba.config.global_vars.py

  1. ENV_VARS["common"] son ​​algunos parámetros públicos, como el título del informe, el nombre del informe, el evaluador y el departamento de pruebas. Se mostrará en el informe de prueba más adelante. Si hay otros, puede agregarlos usted mismo.
    2) ENV_VARS["test"] es para guardar algunos datos de prueba del entorno de prueba. ENV_VARS["live"] guarda algunos datos de prueba del entorno en vivo. Si hay otros entornos, puede continuar agregándolos, como agregar ENV_VARS["dev"] = {"host": "",…}

3. Eliminar los datos del caso de uso de muestra en el marco.

1) Eliminar datatodos los archivos del directorio
2) Eliminar pagetodos los archivos del directorio
3) Eliminar test_casetodos los casos de uso escritos en el directorio

4. Escribe casos de prueba

page1. Cree un nuevo archivo en el directorio pypara administrar el posicionamiento de elementos y los métodos de operación de la página.

2. dataCree un nuevo pyarchivo en el directorio para administrar los datos de prueba requeridos en el caso de prueba.

  • Es necesario que exista un diccionario en los datos de prueba case_commonpara configurar el informe de atracción. La referencia es la siguiente:
case_common = {
    
    
    "allure_epic": "GitLink",
    "allure_feature": "登录模块",
}
  • Se debe hacer referencia a los datos de ejecución reales del caso de uso de la siguiente manera:
# allure_story以及severity用于配置allure报告,建议配置
# 字典命名可以自定义
# title字段建议保留,涉及到报告上的显示
login_pop_success = {
    
    
    "allure_story": "弹窗登录",
    "cases":
        [
            {
    
    "title": "弹窗登录: 正确用户名和密码登录成功", "user": "${login}", "password": "${password}",
             "run": False,
             "severity": "critical"}
        ]
}

3. test_caseEscriba casos de prueba en el directorio.

  • Nota: Los comandos de casos de prueba deben seguir pytestreglas de nomenclatura.

7. Ejecute pruebas automatizadas

1. Activar un entorno virtual existente

  • (Si no existe, creará uno): pipenv shell (debe ejecutarse en el directorio raíz del proyecto)

2. correr

在pycharm>terminal或者电脑命令窗口,进入项目根路径,执行如下命令(如果依赖包是安装在虚拟环境中,需要先启动虚拟环境)。
  > python run.py  (默认在test环境运行测试用例, 报告采用allure)
  > python run.py -m demo 在test环境仅运行打了标记demo用例, 默认报告采用allure
  > python run.py -env live 在live环境运行测试用例
  > python run.py -env=test 在test环境运行测试用例
  > python run.py -report=pytest-html (默认在test环境运行测试用例, 报告采用pytest-html)
  > python run.py -driver chrome edge  (使用chrome以及edge浏览器运行测试用例)

Aviso:

  • Si pycharm.interpreter tiene todos los paquetes de dependencia requeridos por el marco, puede run.pyejecutarlo directamente a través de pycharm haciendo clic derecho

8. Descripción detallada de la función

todo por agregar

9. Problemas que pueden surgir al inicializar el proyecto.

10. Contáctame

Si tiene alguna pregunta sobre el marco, no dude en ponerse en contacto conmigo.

Supongo que te gusta

Origin blog.csdn.net/FloraCHY/article/details/131762483
Recomendado
Clasificación