微信小程序自动化测试——打通 Devops 流程

小程序云测服务提供了丰富的自动化测试能力以及性能测试能力,例如:

更多详情可以查看小程序云测 专栏文章

在提交测试时,一般需要用户在开发者工具,打开云测插件后,手动提交任务。这里有部分用户希望能够做到自动提交测试,将测试能力集成到团队内的devops流程中,做到定时或者代码提交后自动触发。

现在云测插件新增第三方接口能力,支持直接用https接口调用的方式提测,方便用户将云测能力集成devops流程中。详细文档可参考第三方接口介绍。具体来说:

  1. 可以再使用提交测试任务接口,在需要提交任务时,自动提交任务。如结合Crontab或者Jenkins实现定时提交测试任务,做每天的dailybuild
  2. 使用 查询任务状态接口,定时轮询任务是否结束
  3. 任务结束后,可以使用 获取报告分享链接 接口,将报告分享到团队内部群或者邮件中,其他同学可以打开链接直接查看报告

请注意,报告分享的链接有效期是30天。此外注意任何获取链接的同学均可打开报告,请勿在公共场所分享报告,避免泄露项目信息

这里以Jenkins为例,详细介绍云测服务如何和Jenkins打通

环境准备

注:环境准备以Window10+Python项目+Git代码版本管理+Jenkins为例介绍,可根据需求准备环境,例如Linux操作系统,SVN代码版本管理,Java项目等

以下步骤非必须,如果已安装可以跳过

  • 安装JDK 8

  • 安装Python 38

  • 安装Git

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

  • 安装Jenkins (可查看用户手册 https://www.jenkins.io/doc/book/getting-started/)

  • 创建管理员用户

  • 配置Git(这里以Git存储测试脚本举例,用户也可以用SVN等其他工具存储)

    • 安装git插件
      Manage Jenkins > Manage Plugins
      安装 git plugins
    • 配置git工具
      Manage Jenkins > Global Tool Configuration

    在这里插入图片描述

    • 添加凭据
      Manage Jenkins > Manage credentials > 添加凭据
      在这里插入图片描述

Jenkins实现小程序云测自动测试

  • 新建Item
    例如选择Freestyle project
    在这里插入图片描述

  • 配置

    1. 选择GitHub项目
    在这里插入图片描述
    2.选择Git并添加凭据,在Additional Behaviours中选择Check out to a sub-directory
    在这里插入图片描述
    在这里插入图片描述
    3.构建触发器,选择Build periodically
    在这里插入图片描述

    4.构建,选择Execute Windows batch command,并输入需要执行的命令
    在这里插入图片描述

    其中test.py脚本为请求云测第三方服务接口代码

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)

需要帮助

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值