评论

【官方教程】小程序云测实现Devops流程实践分享

文章主要介绍Jenkins与MiniTest云测服务提供的接口的结合并使用,举例说明云测如何集成到Jenkins,并实现Devops流程

简介

小程序云测插件一般是用户手动在开发者工具提交任务。有些用户希望能够做到自动提交测试,将测试能力集成到devops流程中,做到定时或者自动触发。
现在云测插件新增第三方接口能力,支持直接用https接口调用的方式提测,方便用户将云测能力集成devops流程中。文档地址:
https://developers.weixin.qq.com/miniprogram/dev/devtools/minitest/api_exe.html
本文以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)        
    
最后一次编辑于  2022-07-22  
点赞 2
收藏
评论

3 个评论

  • 官方提醒
    官方提醒
    2022-04-22

    您好,请问git代码指的是本地写minium框架的测试代码吗

    2022-04-22
    赞同
    回复 1
    • 积木魔方h0hg
      积木魔方h0hg
      2022-04-22
      不是,是请求云测第三方接口的代码
      2022-04-22
      回复
  • ying.chen
    ying.chen
    2022-04-13

    请问我如何指定特定的开发版小程序呢,每次devops提测的开发版都不是固定的账号打出来的?

    2022-04-13
    赞同
    回复 6
    • 积木魔方h0hg
      积木魔方h0hg
      2022-04-13
      提测接口有wx_id参数
      2022-04-13
      回复
    • ying.chen
      ying.chen
      2022-04-13回复积木魔方h0hg
      你好,wx_id我看是小程序AppID,如何满足使用诉求?
      2022-04-13
      回复
    • 积木魔方h0hg
      积木魔方h0hg
      2022-04-13回复ying.chen
      也支持提测开发版,测试账号的话目前只支持系统默认的虚拟账号
      2022-04-13
      回复
    • ying.chen
      ying.chen
      2022-04-14回复积木魔方h0hg
      我的诉求是测试指定的开发版,比如这次提测使用虚拟账号1打出来的开发版版本1,下次可能是虚拟账号2打出来的开发版版本2
      2022-04-14
      回复
    • YY
      YY
      2022-04-14回复ying.chen
      提测的时候,可以选择是用哪个机器人
      2022-04-14
      回复
    查看更多(1)
  • 谢囧
    谢囧
    2022-04-11

    2022-04-11
    赞同
    回复
登录 后发表内容