Diseño e implementación del marco de pruebas automatizadas de interfaz simple de Python3.

1. Entorno de desarrollo

  • Sistema operativo: Ubuntu18
  • Herramientas de desarrollo: complemento IDEA+PyCharm
  • Versión de Python: 3.6

2. Módulos utilizados

  • solicitudes: utilizado para enviar solicitudes
  • xlrd: operar Excel y organizar casos de prueba
  • smtplib, correo electrónico: enviar informe de prueba
  • registro: seguimiento de registros
  • json: formato de datos
  • Django: desarrollo de interfaz
  • configparser: leer archivos de configuración

3. Diseño del marco

3.1 Proceso

Los casos de uso de la interfaz se organizan a través de Excel y se definen columnas como URL y cuerpo de solicitud. El proceso de ejecución es el siguiente:

  • Utilice la herramienta xlrd para leer la información en Excel y dividirla en solicitudes completas.
  • La clase de solicitud de interfaz ejecuta solicitudes completas una por una. Este proceso debe registrarse y cada ejecución debe ser rastreable.
  • Complete los resultados de las pruebas, envíe correos electrónicos y archive los resultados de cada ejecución. Un mejor enfoque es realizar un informe del estado histórico de la operación, que es más intuitivo.

ventaja:

  • Los casos de uso se organizan a través de Excel, no es necesario escribir código y es fácil comenzar.
  • Cuando la cantidad de casos de uso no es grande, la velocidad de desarrollo es rápida.

defecto:

  • Las dependencias de casos de uso son un problema.
  • Solo se admiten casos de uso de automatización de interfaz.
  • Los casos de uso en Excel no se pueden comprobar de antemano para comprobar si son correctos, solo se puede saber ejecutándolos.
  • No puede gestionar bien una gran cantidad de casos de uso y no admite la colaboración en equipo. Sería una buena opción para las personas usarlo para pruebas de regresión o pruebas de humo después de conectarse.

Al comparar las ventajas y desventajas, se puede descubrir claramente que este marco en realidad tiene muchas deficiencias. Por lo tanto, no importa si se trata de un marco de prueba automatizado de código abierto en la industria o uno desarrollado por una empresa, Excel nunca se ha utilizado para organizar casos de uso. Vale la pena mencionar que el marco de automatización desarrollado por algunas empresas es muy difícil de usar o es una simple combinación de un montón de herramientas. Simplemente no mejora la productividad de su equipo. Sin embargo, los buenos productos no se consiguen de la noche a la mañana y requieren de un proceso de optimización continua. Por lo tanto, vale la pena probar el marco anterior de uso de Excel para organizar casos de uso. Llamemoslo más sencillo por el momento. Actualmente, los mejores marcos de pruebas automatizados incluyen unittest, testng, pytest, etc.

3.2 Estructura del proyecto

  • testcase: archivo json que almacena casos de prueba o solicitudes.
  • config: archivo de configuración.
  • informe: informes de prueba y archivos de registro y sus archivos.
  • hasta: conjunto de herramientas, send_request se usa para enviar solicitudes, email_tool se usa para enviar correos electrónicos, excel_tool se usa para leer datos en Excel, check_result se usa para verificar resultados, run_main entrada de ejecución de caso de uso, log_trace se usa para rastrear registros.

5. Impresión de registros

Utilice el módulo de registro integrado para registrar registros en ejecución y establecer el nivel de registro.
log_trace.log:

import  logging
filename = "../report/test_case_run.log"
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s %(levelname)s1 %(filename)s [line:%(lineno)d]  %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename=filename,
                    filemode='w')

6. Encapsulación de clase de solicitud de interfaz

Instalar solicitudes de módulos de terceros

pip install requests

Defina la función send_request y llame a get, post, delete, put y otros métodos de solicitud de acuerdo con el tipo de método entrante para enviar la solicitud. enviar_request.py:

import  requests
from untils. log_trace import  *

#发送get请求
def get_request(url,data=None,headers=None):
    res = requests.get(url=url,data=data,headers=headers)
    return res

#发送post请求
def post_request(url,data,headers=None):
    res = requests.post(url=url,data=data,headers=headers)
    return res

#发送delete请求
def del_request(url,data=None,headers=None):
    res = requests.delete(url,data=data)
    return res

#发送put请求
def put_request(url,data,headers=None):
    pass

def send_request(method,url,data=None,headers=None):
    try:
        logging.info(headers)
        if headers:
            if method == "GET":
                return get_request(url,data,headers=headers)
            if method == "POST":
                return post_request(url,data=data,headers=headers)
            if method == "DELETE":
                return  del_request(url,data=data,headers=headers)
            #put使用频率低,暂时不写
            if method == "PUT":
                return  put_request(url,data=data,headers=headers)
        else:
            logging.info("Header is null")
    except Exception as e:
        logging.info("send request fail:%s"%e)

Escriba el código en Untils_test.py para probar el método send_request. El código es el siguiente:

#coding:utf-8
from untils.send_request import send_request

def test_send_request():
    url="http://127.0.0.1:9000/articles/"
    headers = {
        "X-Token":"0a6db4e59c7fff2b2b94a297e2e5632e"
    }
    res = send_request("GET",url,headers=headers)
    print(res.json())



if __name__ == "__main__":
    test_send_request()

PYTHON Copiar pantalla completa

resultado de la operación:

/usr/bin/python3.6 /home/stephen/IdeaProjects/apitest/untils/untils_test.py
{'status': 'BS.200', 'all_titles': {'amy1': 'alive', 'modifytest': 'alive', 'addTest': 'alive'}, 'msg': 'query articles sucess.'}

Process finished with exit code 0

Pruebas automatizadas de la interfaz Python desde la base cero hasta el dominio (última versión 2023)

 

Supongo que te gusta

Origin blog.csdn.net/ada4656/article/details/134321039
Recomendado
Clasificación