Pruebas automatizadas de applets de WeChat: supere el proceso de DevOps

El servicio de prueba en la nube del mini programa proporciona una gran cantidad de capacidades de prueba automatizadas y capacidades de prueba de rendimiento, como:

Para obtener más detalles, consulte la columna Prueba en la nube del programa Mini

Al enviar una prueba, el usuario generalmente debe enviar la tarea manualmente después de abrir el complemento de prueba en la nube en la herramienta para desarrolladores. Algunos usuarios aquí esperan poder enviar pruebas automáticamente, integrar las capacidades de prueba en el proceso de desarrollo dentro del equipo y lograr el tiempo o la activación automática después del envío del código.

Ahora, el complemento de prueba en la nube tiene una nueva capacidad de interfaz de terceros, que admite el método de llamar directamente a la interfaz https para probar, lo que es conveniente para que los usuarios integren las capacidades de prueba en la nube en el proceso de desarrollo. Para obtener documentación detallada, consulte la introducción de la interfaz de terceros . Específicamente:

  1. La interfaz se puede utilizar de nuevo 提交测试任务para enviar tareas automáticamente cuando sea necesario enviarlas. Por ejemplo, combine Crontab o Jenkins para implementar el envío regular de tareas de prueba y hacer compilaciones diarias.
  2. Use 查询任务状态la interfaz para sondear periódicamente si la tarea ha terminado
  3. Una vez finalizada la tarea, puede usar 获取报告分享链接la interfaz para compartir el informe con el grupo interno o el correo electrónico del equipo, y otros estudiantes pueden abrir el enlace para ver el informe directamente.

Tenga en cuenta que los enlaces compartidos por los informes son válidos durante 30 días. Además, tenga en cuenta que cualquier estudiante que obtenga el enlace puede abrir el informe; no comparta el informe en lugares públicos para evitar la filtración de información del proyecto.

Aquí tomamos a Jenkins como ejemplo para presentar en detalle cómo el servicio de medición en la nube puede comunicarse con Jenkins.

Preparación ambiental

Nota: La preparación del entorno se presenta con Window10+Python project+Git code version management+Jenkins como ejemplo. Puede preparar el entorno según sus necesidades, como el sistema operativo Linux, la gestión de versiones de código SVN, el proyecto Java, etc.

Los siguientes pasos no son necesarios, puede omitirlos si ya ha instalado

  • Instalar JDK8

  • Instalar Python 38

  • Instalar Git

  • Descarga Jenkins (https://www.jenkins.io/download/)

  • Instale Jenkins (consulte el manual del usuario https://www.jenkins.io/doc/book/getting-started/)

  • Crear un usuario administrador

  • Configure Git (aquí usamos Git para almacenar scripts de prueba como ejemplo, los usuarios también pueden usar otras herramientas como SVN para almacenar)

    • Instale el complemento de git
      Administrar Jenkins> Administrar complementos
      para instalar los complementos de git
    • Configurar la herramienta git
      Administrar Jenkins > Configuración de herramienta global

    inserte la descripción de la imagen aquí

    • Agregar credenciales
      Administrar Jenkins > Administrar credenciales > Agregar credenciales
      inserte la descripción de la imagen aquí

Jenkins implementa pruebas automáticas de pruebas en la nube de programas pequeños

  • Cree un nuevo elemento,
    por ejemplo, seleccione un proyecto de estilo libre
    inserte la descripción de la imagen aquí

  • configuración

    1. Seleccione el proyecto GitHub
    inserte la descripción de la imagen aquí
    2. Seleccione Git y agregue credenciales, seleccione Desproteger a un subdirectorio en Comportamientos adicionales
    inserte la descripción de la imagen aquí
    inserte la descripción de la imagen aquí
    3. Cree el disparador, seleccione Generar periódicamente
    inserte la descripción de la imagen aquí

    4. Cree, seleccione Ejecutar comando por lotes de Windows e ingrese el comando que se ejecutará
    inserte la descripción de la imagen aquí

    Entre ellos, el script test.py es el código de interfaz para solicitar servicios de terceros de pruebas en la nube.

class MiniTestApi:
    def __init__(self, user_token, group_en_id):
        self.token = user_token          # 需要填写自己的token
        self.group_en_id = group_en_id   # 项目的英文ID
        self.minitest_api = 'https://minitest.weixin.qq.com/thirdapi/plan'
        self.share_api = 'https://minitest.weixin.qq.com/thirdapi/share_url'

    def third_auto_task(self):
        """
        提交测试任务
        :return:
        """
        config = {
    
    
            "assert_capture": True,
            "auto_relaunch": True,
            "auto_authorize": False,
            "audits": True,
            "compile_mode": "pages/getOpenId/index?p=1&m=2"
        }

        data = {
    
    
            'token': self.token,
            'group_en_id': self.group_en_id,
            'test_type': 2,
            'platforms': 'android,ios',
            'wx_id': '',
            'wx_version': 3,
            'desc': 'Minium测试',
            'test_plan_id': 6,
            'dev_account_no': 1,
            'minium_config': config,
        }
        resp = requests.post(
            self.minitest_api,
            json=data
        )
        resp = resp.json()
        print(resp)
        return resp

    def query_auto_task(self, plan_id):
        """
        查询测试任务
        :param plan_id:
        :return:
        """
        data = {
    
    
            'token': self.token,
            'group_en_id': self.group_en_id,
            'plan_id': plan_id,
        }
        resp = requests.get(
            self.minitest_api,
            params=data
        )
        resp = resp.json()
        print(resp)

    def share_url(self, plan_id):
         """
         获取报告分享链接
         :param plan_id:
         :return:
        """
        data = {
    
    
            'token': self.token,
            'group_en_id': self.group_en_id,
            'plan_id': plan_id,
        }
        resp = requests.get(
            self.share_api,
            params=data
        )
        resp = resp.json()
        print(resp)


if __name__ == '__main__':
    minitest_client = MiniTestApi('xxx', 'xxx')
    # 提交测试任务
    result = minitest_client.third_auto_task()
    if "plan_id" not in result["data"].keys():
        exit(1)
    plan_id = result["data"]["plan_id"]
    time.sleep(10)
    # 查询任务状态
    # status  1: 排队中  2: 测试中  11: 未发现Case  12: 测试结束  15: 任务超时
    minitest_client.query_auto_task(plan_id)
    # 获取任务报告分享链接
    # minitest_client.share_url(plan_id)

necesitas ayuda

Supongo que te gusta

Origin blog.csdn.net/WXMiniTest/article/details/127076848
Recomendado
Clasificación