Prueba automatizada de interfaz: herramienta Moco para servidor simulado

¿Qué es un servidor simulado?

Mock: el inglés se puede traducir como imitación. El servidor simulado es una tecnología que usamos para eliminar dependencias (acoplamiento) y pretender que se implementa. Por ejemplo, el front-end necesita usar ciertas API para la depuración, pero el servidor no las ha desarrollado. APIs. Luego, el front-end El trabajo está bloqueado por el servidor, luego puede usar el servidor simulado para pretender implementar estas API, que pueden devolver datos específicos y ayudar al front-end a representar la página. Por supuesto, necesitamos haga un acuerdo con el servidor para mayor comodidad, cuál es el contenido de la interfaz acordada.

especificación de interfaz relajante

Transfiera al blog de Ruan Yifeng: Guía de diseño de API RESTful: http://www.ruanyifeng.com/blog/2014/05/restful_api.html

Moco-convención uri (1)

La herramienta moco es un proyecto de código abierto en github. Puede usar la herramienta moco para configurar un servidor simulado simple para facilitar nuestra depuración. La dirección de github: https://github.com/dreamhead/moco. El descargado es un jar. La versión actual es 0.11.1. Primero, necesitamos escribir un archivo de configuración y escribir la solicitud y la respuesta que necesitamos para "simular" en este archivo de configuración. El archivo de configuración está en formato json. A continuación, escriba una solicitud relativamente simple para visitar localhost: interfaz 12306/hello, devuelva un texto sin formato "moco", la herramienta moco ha acordado en el puerto 12306, no es necesario enredarse, es similar al acuerdo de tomcat en el puerto 8080, el config.json El archivo es el siguiente, y el archivo json debe colocarse en el mismo paquete jar que la carpeta moco. Por ejemplo, la estructura de directorios del blogger:

[
    {
        "request":
        {
            "uri":"/hello"
        },
        "response":
        {
            "text":"moco"
        }
    }
]

El archivo de configuración es relativamente simple, solicitamos la interfaz, devolvemos un texto plano e iniciamos el comando:

>java -jar moco-runner-0.11.1-standalone.jar http -p 12306 -c config.json

El http aquí es el protocolo http, -p 12306 vincula el número de puerto 12306, -c config.json lee el archivo de configuración
inserte la descripción de la imagen aquí

Al ver el rendimiento anterior, significa que moco se ha iniciado con éxito. Visitamos localhost:12306/hello y vemos los siguientes resultados, lo que significa que el servidor simulado ha devuelto con éxito los datos acordados "moco"
inserte la descripción de la imagen aquí 

Moco-convención uri (2)

Modifique el archivo de configuración de la siguiente manera, tenga en cuenta que la herramienta moco puede monitorear los cambios en el archivo de configuración json en tiempo real y reiniciar el servidor por sí mismo
inserte la descripción de la imagen aquí

[
    {
        "request":
        {
            "uri":"/"
        },
        "response":
        {
            "text":"welcome to Moco"
        }
    },
    {
        "request":
        {
            "uri":"/hello"
        },
        "response":
        {
            "text":"moco"
        }
    }
]

 A continuación, visite localhost:12306 y 12306:12306/hello respectivamente, los resultados son los siguientes:
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Moco-acuerdo obtener solicitud

[
    {
        "request":
        {
            "method":"get",
            "uri":"/get"
        },
        "response":
        {
            "text":"moco get"
        }
    }
]

 Moco-acuerdo post solicitud

[
    {
        "request":
        {
            "method":"post",
            "uri":"/post"
        },
        "response":
        {
            "text":"moco post"
        }
    }
]

Parámetros de solicitud de la convención Moco

[
    {
        "request":
        {
            "method":"get",
            "uri":"/get",
            "queries":
            {
                "id":"12306",
                "name":"moco"
            }
        },
        "response":
        {
            "text":"moco queries"
        }
    }
]

inserte la descripción de la imagen aquí

El cuerpo de la solicitud del acuerdo Moco debe estar en formato json

[
    {
        "request":
        {
            "method":"post",
            "uri":"/post",
            "text":
            {
                "json":"{\"id\":\"12306\",\"name\":\"moco\"}"
            }
        },
        "response":
        {
            "status":"200"
        }
    }
]

 Encabezado de solicitud de acuerdo de Moco

[
    {
        "request":
        {
            "method":"post",
            "uri":"/post",
            "headers":
            {
                "content-type":"application/json",
                "Connection":"keep-alive",
                "Content-Encoding":"gzip"
            }
        },
        "response":
        {
            "status":"200"
        }
    }
]

Contenido de devolución del acuerdo Moco

Ya hemos visto el contenido de devolución centralizado de la respuesta, como el texto y el estado. Mostremos el archivo devuelto y configuremos el formato del archivo, etc.

[
    {
        "request":
        {
            "method":"post",
            "uri":"/post",
        },
        "response":
        {
            "file":"data.js",
            "charset":"GBK",
            "version":"HTTP/1.0"
        }
    }
]

Código de estado de devolución de Moco-promise
Consulte el json anterior, que ya contiene el uso del código de estado de devolución

Uso de Moco en pruebas unitarias (tomando Python como ejemplo)

[
    {
        "request":
        {
            "method":"get",
            "uri":"/api/hello"
        },
        "response":
        {
            "text":"hello Savitar!",
            "status":200
        }
    }
]

Aquí, se simula una solicitud de obtención y se devuelve el texto sin formato "¡hola Savitar!" y el código de estado 200. Primero, visite localhost:12306/api/hello en el navegador y el resultado es el siguiente:

inserte la descripción de la imagen aquí
Muestra que la interfaz no devuelve ningún problema y luego usa solicitudes de Python + unittest para escribir un caso de prueba de interfaz simple

#coding=utf-8
'''
@author=Savitar
'''
import unittest
import requests

class MocoTestApi(unittest.TestCase):
    def setUp(self):
        self.url = "http://localhost:12306"
    def test_moco_test_api(self):
        api = "/api/hello"
        url = self.url+api
        r = requests.get(url)
        self.assertEqual(r.status_code,200)
        self.assertEqual(r.text,"hello Savitar!")
    def tearDown(self):
        pass

if __name__ == '__main__':
    unittest.main()

 Los resultados de la ejecución son los siguientes:
inserte la descripción de la imagen aquí
el código anterior implementa la interfaz de acceso, y el código de estado y el contenido devuelto por la afirmación, la afirmación es exitosa, lo que indica que la prueba de la interfaz pasó


              [El siguiente es el diagrama de sistema de arquitectura de conocimiento de aprendizaje de ingeniero de prueba de software más completo en 2023 que compilé]


1. De la entrada al dominio de la programación en Python

2. Proyecto de automatización de interfaz de combate real.

3. Combate real del proyecto de automatización web


4. Combate real del proyecto de automatización de aplicaciones

5. Hoja de vida de los fabricantes de primer nivel


6. Probar y desarrollar el sistema DevOps

7. Herramientas de prueba automatizadas de uso común


Ocho, prueba de rendimiento JMeter

9. Resumen (pequeña sorpresa al final)

la vida es larga así que agregue aceite. Cada esfuerzo no será defraudado, mientras perseveres, habrá recompensas al final. Valora tu tiempo y persigue tus sueños. No olvides la intención original, sigue adelante. ¡Tu futuro está en tus manos!

La vida es corta, el tiempo es precioso, no podemos predecir lo que sucederá en el futuro, pero podemos captar el momento presente. Aprecia cada día y trabaja duro para hacerte más fuerte y mejor. Creencia firme, búsqueda persistente, ¡el éxito eventualmente te pertenecerá!

Solo desafiándote constantemente a ti mismo puedes superarte constantemente. Persista en perseguir sus sueños y avance con valentía, y descubrirá que el proceso de lucha es tan hermoso y valioso. ¡Cree en ti mismo, puedes hacerlo!

  

Supongo que te gusta

Origin blog.csdn.net/nhb687096/article/details/132147921
Recomendado
Clasificación