Acabado explosivo, empaquetado de marco de prueba automatizado basado en datos de interfaz (práctico)


Prefacio

Marco de automatización de interfaz: basado en datos

Los datos de entrada y salida de la prueba aquí se leen de archivos de datos (grupo de datos, fuente ODBC, archivo CSV, archivo EXCEL, archivo Json, archivo Yaml, objeto ADO, etc.) y se generan mediante una herramienta de captura o un script de código generado manualmente. Cargar en variables.

En este marco, las variables se utilizan no solo para almacenar valores de entrada sino también para almacenar valores de verificación de salida. A lo largo del programa, el script de prueba lee el archivo numérico y registra el estado y la información de la prueba.

Esto es similar a las pruebas basadas en tablas, en las que los casos de prueba están contenidos en el archivo de datos en lugar de en el script, que es simplemente un "controlador" o un mecanismo de entrega de los datos.

Para decirlo de manera más simple: los datos de prueba y el código utilizados en el proceso de prueba se escriben y almacenan por separado.

Por ejemplo: los datos appid-sercet y los resultados esperados utilizados al probar la interfaz del token se colocan de antemano en un archivo de datos.

Por ejemplo:
el token de acceso en el proyecto es un dato de prueba requerido públicamente. Se genera una vez y tiene un período de validez de 7200 segundos. Generalmente, todas las pruebas de interfaz se pueden ejecutar en 2 horas.
Logre la adquisición única del valor del token, guárdelo en un archivo y luego use el valor del token en el archivo para completar la prueba.

1. Cree una nueva carpeta conf en el directorio raíz del proyecto y cree un nuevo archivo config.ini a continuación

E1

2. Cree un nuevo archivo ini_file_utils.py en la carpeta py común
y escriba el código:

import os
import configparser


class IniFileUtils:  #和框架业务无关的底层代码==》公共底层代码

    def __init__(self,file_path):
        self.ini_file_path = file_path
        self.conf_obj = configparser.ConfigParser()
        self.conf_obj.read(self.ini_file_path, encoding='utf-8')

    def get_config_value(self,section, key):
        value = self.conf_obj.get(section, key)
        return value

    def set_config_value(self,section, key, value):
        self.conf_obj.set(section, key, value)
        config_file_obj = open(self.ini_file_path, 'w')
        self.conf_obj.write(config_file_obj)
        config_file_obj.flush()
        config_file_obj.close()

if __name__ == '__main__':
    current_path = os.path.dirname(__file__)
    config_file_path = os.path.join(current_path, '../conf/config.ini')
    ini_file = IniFileUtils(config_file_path)
    print(ini_file.get_config_value('default', 'HOSTS'))
    ini_file.set_config_value('default','TOKEN_VALUE', 'SSS9090')

Ejecute para ver los resultados:

E2

El valor de token_value en el archivo de configuración ini

E3

3. Vuelva a escribir el archivo local_config.py y encapsule el valor en el archivo ini.

E4

Escribir código:

import os
from common.ini_file_utils import IniFileUtils


current_path = os.path.dirname(os.path.abspath(__file__))
config_file_path = os.path.join(current_path, '../conf/config.ini')


class LocalConfig():  # #和框架业务有关系的底层代码

    def __init__(self,file_path = config_file_path):
        self.ini_file_obj = IniFileUtils(file_path)
    @property
    def get_hosts(self):
        '''获取ini文件中的hosts值'''
        hosts_value = self.ini_file_obj.get_config_value('default', 'hosts')
        return hosts_value
    @property
    def get_token_value(self):
        '''获取ini文件中的token_value值'''
        token_value = self.ini_file_obj.get_config_value('default','token_value')
        return token_value

local_config = LocalConfig()

if __name__ == '__main__':
    print(local_config.get_hosts)
    print(local_config.get_token_value)

Ver resultados de ejecución:

E5

4. Modifique el archivo common_function.py y coloque el valor del token obtenido en el archivo ini.
Escriba el código:

import os
import jsonpath
from common.local_config import local_config
from common.common_api_info import CommonApiInfo
from common.ini_file_utils import IniFileUtils


current_path = os.path.dirname(os.path.abspath(__file__))
config_file_path = os.path.join(current_path, '../conf/config.ini')

def save_access_token_value_info_ini_file(session_obj,hosts):
    """获取access_token的值并写入到ini文件中"""
    response = CommonApiInfo(session_obj,hosts).get_access_token_api('client_credential',
                                                          'wxf14419077f707856',
                                                          '92a113bd4b5ffdc72144740dc7123c99')
    # 获取响应json中的access_token的值
    token_value = jsonpath.jsonpath(response.json(), "$.access_token")[0]
    # 把获取到的access_token值写入到ini文件中
    IniFileUtils(config_file_path).set_config_value('default', 'token_value', token_value)
    # return token_value

if __name__ == '__main__':
    import requests
    save_access_token_value_info_ini_file(requests.session(), local_config.get_hosts)

Después de la ejecución, verifique el valor de token_value en el archivo ini:

Se ha escrito el último valor del token.

E5

5. Modifique el archivo run_api_tests.py y primero escriba el valor del token en el archivo ini.

E6

6. Modifique el código de la capa de caso de uso y obtenga el archivo py del token:
script de código de la capa de caso de uso antes de la modificación VS después de la modificación.

E7

Después de la modificación

E8

Obtenga el archivo py del token:

E9

7. Ejecute el archivo run_api_tests.py y vea los resultados de la ejecución;

E10

Vista del informe

E11

El valor del token se genera en Run_api_tests.py y se entrega al archivo de configuración ini. Cuando la prueba obtiene la interfaz del token, se llama al valor del token generado. Para evitar que el valor generado posteriormente sobrescriba el valor anterior y cause la configuración ini Para que el archivo deje de ser válido, se debe cambiar la interfaz del token de prueba. Cuentas diferentes (appid y secreta)

El siguiente es el diagrama del sistema de arquitectura de conocimiento de aprendizaje de ingenieros de pruebas de software más completo que compilé en 2023.

1. Programación en Python desde el nivel básico hasta el dominio

Por favor agregue la descripción de la imagen.

2. Implementación práctica de proyectos de automatización de interfaces.

Por favor agregue la descripción de la imagen.

3. Combate real del proyecto de automatización web.

Por favor agregue la descripción de la imagen.

4. Implementación práctica del proyecto de automatización de aplicaciones.

Por favor agregue la descripción de la imagen.

5. Currículums de los fabricantes de primer nivel.

Por favor agregue la descripción de la imagen.

6. Probar y desarrollar el sistema DevOps

Por favor agregue la descripción de la imagen.

7. Herramientas de prueba automatizadas de uso común

Por favor agregue la descripción de la imagen.

8. Prueba de rendimiento de JMeter

Por favor agregue la descripción de la imagen.

9. Resumen (pequeña sorpresa al final)

La lucha es la base de la vida y la perseverancia es la contraseña del éxito; busca la excelencia, sigue adelante y compone música brillante con sudor. ¡Cree en tu propio potencial y talentos, supérate constantemente y crea tu propia y magnífica imagen de vida!

Acepta activamente los desafíos y entra con valentía en la etapa de la vida; mantén tus sueños en mente y persigue firmemente el éxito brillante. ¡No te detengas, no te detengas, sigue adelante, deja ir tu pasión; cree en tu propia fuerza, trabaja duro y escribe un capítulo brillante en la vida!

La confianza ilumina el camino por delante, el sudor riega las flores brillantes; el trabajo duro trasciende los límites y los sueños bailan con la melodía de la juventud. Cíñete a tu pasión, persigue la distancia y crea tu propia y magnífica leyenda. ¡Trabaja duro, tus talentos florecerán, avanzará con valentía y logrará una vida maravillosa!

Supongo que te gusta

Origin blog.csdn.net/m0_60054525/article/details/132024184
Recomendado
Clasificación