华为云用户手册

  • 查看并使用桌面悬浮球 桌面悬浮球隐藏了桌面快捷菜单。您可以拖动桌面悬浮球调整位置,或单击桌面悬浮球打开快捷菜单以查看云机当前网络信号,或进行如下操作: 打开“声音保持”,音视频类应用在后台运行时可继续播放声音。 打开“静音”可一键开启云手机静音模式。 打开“画中画”按钮,开启画中画模式,退出云手机APP后,也能进行后台操作。 单击“导航按键”可设置云机导航方式。 单击“返回主屏”,可返回云机桌面。 单击“重启云机”可重新启动云手机。 单击“退出云机”可回到云机首页。 图1 云手机悬浮球功能
  • 出现拉取不到代码的场景 如下图所示: 一般原因可能有三种。 如果是在自己的节点上构建应用,可能是该节点没有绑定弹性ip,如上图所示"192.168.x.x"的节点没有绑定弹性ip,解决方法:去该节点绑定弹性ip。 授权信息过期,代码源的私人令牌权限范围不够,或者授权信息已被移除等,例如:CodeArts的代码源,拉取不到代码,可能是创建授权的时候,用户名对应的密码输错了,导致拉取不到代码。解决方法:重新授权即可。 自己搭建的代码源仓库,和构建的节点网络不通,例如:在集群A的某一个节点上搭建了一个私有的bitbucket,使用集群B构建,但是集群B和集群A不是同一个vpc,内网不通,导致构建拉取不到代码。解决方法:打通网络。
  • CCE集群节点配置污点和容忍策略后构建报错 问题描述 构建失败,构建日志显示如下错误提示信息: 0/1 nodes are available: 1 node(s) had untolerated taint {node.kubernetes.io/route-unschedulable: }. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling. 原因分析 由于构建任务被调度到了CCE集群的受限调度节点上,该节点进行了污点管理配置(如报错信息中显示的node.kubernetes.io/route-unschedulable)。污点能够使节点排斥某些特定的Pod,从而避免Pod调度到该节点上,同时该CCE集群中没有其他节点可供调度,导致构建失败报错。 解决方法 请参考管理节点污点(Taint),去除受限调度节点上的污点,保证CCE集群下至少有一个节点可供调度。
  • 构建的代码依赖自己的私有maven仓库 有以下两种解决方案。 在自己的项目的根目录下增加settings.xml文件,在settings.xml指定自己的私有maven仓库地址(如果自己的私有maven仓库时需要认证的,则需要在settings.xml配置上自己的认证信息,用户名密码等)。 在自己项目的pom.xml文件中,指定自己的私有maven仓库。 settings.xml和pom.xml所在路径示例如下。
  • 解决方法 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行如下命令查看安装虚拟机Agent时选择的“授权模式”。 cd /opt/servicestage-agent cat servicestage-agent.conf 如果返回结果中AK、SK的值为空,则“授权模式”为“委托授权”,请执行3。 如果返回结果中AK、SK的值不为空,则“授权模式”为“AK/SK”,请执行4。 “授权模式”为“委托授权”,请执行以下操作: 登录云服务器控制台。 在左侧导航栏选择“弹性云服务器”,单击虚拟机Agent离线的弹性云服务器名称。 在“基本信息”页签的“管理信息”区域,查看该弹性云服务器绑定的IAM委托名称。 登录统一身份认证服务控制台。 在左侧导航栏选择“委托”,单击3.c获取到的委托名称。 选择“基本信息”页签,查看“云服务”是否为ECS服务。 选择“授权记录”页签,查看“权限”是否为Tenant Administrator。 如果以上全部为是,请执行5。 如果以上任意一项为否,请先修改委托,然后执行3.f。 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行以下命令完成agent的重启,其中x.x.x要替换成环境中servicestage-agent的实际版本。 cd /opt/servicestage-agent/servicestage-agent-x.x.x su agent ./servicestage-agent.sh restart “授权模式”为“AK/SK”,请执行以下操作: 获取权限正确的或者创建新的AK、SK,请参考访问密钥。 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行以下命令修改配置文件中的AK和SK的值,修改完后保存退出。 cd /opt/servicestage-agent vi servicestage-agent.conf 执行以下命令完成agent的重启,其中x.x.x要替换成环境中servicestage-agent的实际版本: cd /opt/servicestage-agent/servicestage-agent-x.x.x su agent ./servicestage-agent.sh restart 如果以上方法不能解决问题,请联系技术支持工程师。
  • 步骤五:预览并发布大屏页面 在AstroCanvas中开发大屏页面时,支持直接在线预览效果,确保开发编辑效果与发布后运行效果一致。预览效果符合预期后,可直接发布大屏页面,并在线查看城市交通状况。 在已创建的大屏页面中,单击页面上方的,预览页面效果。 如果预览效果不符合预期,可进行微调,直至符合预期。 单击,打开“发布链接”开关,获取页面访问地址。 图13 打开发布链接 单击,可生成新的链接,原链接将不可访问。单击,可复制该链接。 设置访问限制。 如果是新建项目,需要为发布链接设置访问限制,即“分享码访问”或“Token认证”必须设置其中一个,否则链接在运行态无法正常访问。本入门中,以设置分享码为例进行介绍。 图14 分享码设置 分享码设置:设置页面分享码后,只能通过分享码来访问页面,提高安全性。 设置Token认证:通过设置Token认证,可对大屏交互时传递的参数进行签名鉴权,保证大屏的URL访问链接的参数不会被篡改,从而提高大屏数据及用户信息的安全性。 设置内容安全策略:大屏页面嵌入第三方系统时(例如以iframe形式嵌入),如果涉及跨域访问,请开启内容安全策略。设置内容安全策略的主要目的是减少和报告XSS攻击,缓解跨站脚本攻击。除限制可以加载内容的域,还可指明哪种协议允许使用,缓解数据包嗅探攻击。 设置完成后,在浏览器中打开发布链接地址,输入分享码后,单击,即可在线查看城市交通状态。 图15 输入分享码
  • 步骤三:创建大屏&PC端项目 在AstroCanvas中创建页面前,需要先创建一个项目。项目可以理解为是一种业务场景的集合,在项目中可以创建多个页面。 在AstroCanvas服务控制台,单击“进入首页”,进入AstroCanvas界面。 在“项目列表”中,单击“+ 新建项目”。 图7 进入新建项目页面 在新建项目页面,选择“大屏&PC端”,输入项目名称(如交通管理),单击“新建”。 图8 新建大屏&PC端项目 系统自动进入该新建项目的“大屏&PC端项目”页面,如图9。 图9 大屏&PC端项目页面
  • 步骤一:注册账号并实名认证 使用AstroCanvas前,需要先注册一个华为账号并进行实名认证。如果您已有一个华为账号,可直接跳过如下操作,但需要确保账号有足够的金额。 进入华为云官网,单击页面右上角的“注册”。 参考注册华为账号并开通华为云中操作,完成注册。 注册后参考个人账号如何完成实名认证或企业账号如何完成实名认证中操作,完成个人或企业账号实名认证。 为账号进行重置。 购买AstroCanvas实例时需要收费,请提前为您的账号进行重置,确保账号有足够的金额。 关于AstroCanvas的价格说明,请参见计费说明。 关于充值,请参见账户充值。
  • 步骤二:购买AstroCanvas实例 在使用AstroCanvas前,您需要购买一个AstroCanvas实例。AstroCanvas实例是一个独立的资源空间,所有的操作都是在实例内进行,不同实例间的资源相互隔离。本入门以购买基础版实例为例,进行介绍。 进入购买Astro大屏应用实例页面。 实例版本选择“Astro大屏应用基础版”,按需设置购买时长,单击“立即购买”。 图3 购买实例 选择支付方式,单击“确认付款”,完成订单支付。 图4 确认付款 订单支付成功后,单击“返回Astro轻应用控制台”。 图5 返回控制台 在Astro大屏应用控制台中,可以查看Astro大屏应用的安装状态。当“实例状态”变为“运行中”时,说明实例已安装好,可以正常使用。 图6 Astro大屏应用控制台
  • 步骤四:构建可视化大屏页面 AstroCanvas中预置了一些可复用的页面样例作为模板(预置模板和自定义模板),通过模板创建新的页面,可充分利用已有资源,减少重复开发,提高交付效率。本入门以交通管理模板为例,向您介绍如何快速构建大屏页面。 在“大屏&PC端项目”页面,单击“新建页面”。 在预置模板中,选择“交通管理”,单击“使用此模板”。 图10 选择交通管理模板 输入页面标题(如A市交通管理分析大屏),单击“新建”。 图11 设置页面标题 系统自动进入大屏开发页面,如图12。您可以直接使用该大屏页面,也可以根据业务需求进行二次开发。 图12 大屏开发页面 单击页面上方的,完成大屏页面的创建。
  • 操作流程 在AstroCanvas中开发大屏页面的流程,如图2所示。 图2 开发大屏页面流程 注册账号并实名认证 注册一个华为账号并进行实名认证,认证后需要为账号进行充值。如果您已有一个华为账号,可直接跳过如下操作,但需要确保账号有足够的金额。 购买AstroCanvas实例 在使用AstroCanvas前,您需要购买一个AstroCanvas实例。AstroCanvas实例是一个独立的资源空间,所有的操作都是在实例内进行,不同实例间的资源相互隔离。 创建大屏&PC端项目 在AstroCanvas中创建页面前,需要先创建一个项目。项目可以理解为是一种业务场景的集合,在项目中可以创建多个页面。 构建可视化大屏页面 通过AstroCanvas中预置的交通管理模板,快速创建一个可视化大屏页面。 预览并发布大屏页面 在线预览大屏页面效果,确保开发编辑效果与发布后运行效果一致。预览效果符合预期后,可直接发布大屏页面,并在线查看城市交通状况。
  • 入门实践 当您购买了Astro大屏应用实例后,可以根据业务需要搭建所需的大屏页面和移动端页面。本文介绍Astro大屏应用常见的搭建实践,帮助您更好的使用Astro大屏应用。 表1 常用最佳实践 实践 描述 使用AstroCanvas开发人员来访统计大屏页面 本实践通过开发一个人员来访统计大屏,带您了解在AstroCanvas中开发一个大屏页面的流程。 使用AstroCanvas开发告警处理情况统计移动端页面 本实践通过开发一个告警处理情况移动端页面,带您了解在AstroCanvas中开发一个移动端页面的流程。
  • 开发大屏页面 登录AstroCanvas服务控制台,单击“进入首页”,进入AstroCanvas界面。 选择大屏&PC端项目,输入项目名称为“统计”,单击“新建”。 图2 新建项目 在大屏&PC端项目中,单击“+ 新建页面”,选择“新建空白页面”。 输入页面标题“人员来访统计”,单击“新建”。 页面标题的长度为1~100个字符。如果页面默认大小和您的显示分辨率或目标分辨率不符,请自行调整页面分辨率及组件布局以达到最佳显示效果 在页面上方单击,根据实际需要设置背景图片。 图3 设置背景图片 图4 选择背景图 从全部组件中,分别拖拽文本编辑、水平基本柱图、基本柱图、和区域图到画布区域,布局如图6所示。 图5 拖拽文本编辑组件到画布 图6 组件布局 在页面右上角,根据需要选择所需的主题(本示例设置为经典原始,即单击“取消当前主题卡片装饰”)。 配置文本编辑组件。 选中上方文本编辑组件,单击上方,设置文本内容为“人员来访统计”,字体设置为“60”。 图7 设置文本编辑标题 在段落设置中,设置标题对齐方式为“居中”。 图8 设置标题对齐方式 配置水平基本柱图组件。 选中最上方的水平基本柱图组件,在组件上方单击,配置组件数据,单击“保存”。 “数据类型”选择“静态数据”,输入如下示例数据,并单击,格式化数据。 [{ "x": "人员统计", "y": 153, "s": "总公司员工" }, { "x": "人员统计", "y": 80, "s": "合作人员" }, { "x": "人员统计", "y": 63, "s": "访客人员" }, { "x": "人员统计", "y": 124, "s": "安防人员" }, { "x": "人员统计", "y": 56, "s": "保洁人员" } ] 选中水平基本柱图组件,在组件上方单击,设置模板为“蓝色渐变不排序”。 图9 设置模板 选中水平基本柱图组件,在组件上方单击,将所有数据系列中的“数据标签”设置为“上”,让数据显示在柱形图上方。 图10 数据显示在柱形图上方 打开水平堆叠效果。 图11 打开水平堆叠 选中水平基本柱图组件,在组件上方单击,隐藏x轴,并隐藏y轴网格线。 图12 隐藏x轴 图13 隐藏y轴网格线 选中水平基本柱图组件,在组件上方单击,设置组件标题内容为“当前人员类型统计”。 图14 设置组件标题 参考9,配置左下角基本柱图。 选中左下角的基本柱图组件,在组件上方单击,配置组件数据,单击“保存”。 “数据类型”选择“静态数据”,输入如下示例数据,并单击,格式化数据。 [{ "x": "01", "y": 20, "s": "入园人数" }, { "x": "02", "y": 30, "s": "入园人数" }, { "x": "03", "y": 45, "s": "入园人数" }, { "x": "04", "y": 20, "s": "入园人数" }, { "x": "05", "y": 60, "s": "入园人数" }, { "x": "06", "y": 80, "s": "入园人数" }, { "x": "07", "y": 140, "s": "入园人数" }, { "x": "08", "y": 200, "s": "入园人数" }, { "x": "09", "y": 145, "s": "入园人数" }, { "x": "10", "y": 40, "s": "入园人数" }, { "x": "11", "y": 70, "s": "入园人数" }, { "x": "12", "y": 60, "s": "入园人数" }, { "x": "13", "y": 80, "s": "入园人数" }, { "x": "14", "y": 16, "s": "入园人数" }, { "x": "15", "y": 87, "s": "入园人数" }, { "x": "16", "y": 77, "s": "入园人数" }, { "x": "17", "y": 60, "s": "入园人数" }, { "x": "18", "y": 20, "s": "入园人数" }, { "x": "19", "y": 60, "s": "入园人数" }, { "x": "20", "y": 80, "s": "入园人数" }, { "x": "21", "y": 55, "s": "入园人数" }, { "x": "22", "y": 68, "s": "入园人数" }, { "x": "23", "y": 70, "s": "入园人数" }, { "x": "24", "y": 24, "s": "入园人数" }, { "x": "01", "y": 90, "s": "出园人数" }, { "x": "02", "y": 60, "s": "出园人数" }, { "x": "03", "y": 30, "s": "出园人数" }, { "x": "04", "y": 20, "s": "出园人数" }, { "x": "05", "y": 10, "s": "出园人数" }, { "x": "06", "y": 110, "s": "出园人数" }, { "x": "07", "y": 140, "s": "出园人数" }, { "x": "08", "y": 87, "s": "出园人数" }, { "x": "09", "y": 64, "s": "出园人数" }, { "x": "10", "y": 45, "s": "出园人数" }, { "x": "11", "y": 11, "s": "出园人数" }, { "x": "12", "y": 24, "s": "出园人数" }, { "x": "13", "y": 80, "s": "出园人数" }, { "x": "14", "y": 14, "s": "出园人数" }, { "x": "15", "y": 98, "s": "出园人数" }, { "x": "16", "y": 35, "s": "出园人数" }, { "x": "17", "y": 41, "s": "出园人数" }, { "x": "18", "y": 14, "s": "出园人数" }, { "x": "19", "y": 45, "s": "出园人数" }, { "x": "20", "y": 80, "s": "出园人数" }, { "x": "21", "y": 31, "s": "出园人数" }, { "x": "22", "y": 22, "s": "出园人数" }, { "x": "23", "y": 23, "s": "出园人数" }, { "x": "24", "y": 24, "s": "出园人数" } ] 选中基本柱图组件,单击组件上方的,在统一配置中将数据系列中柱条宽度设置为8。 图15 设置柱条宽度为8 选中基本柱图组件,单击组件上方的,显示x轴网格线,显示y轴轴线,隐藏y轴网格线。 图16 显示x轴网格线 图17 显示y轴轴线、隐藏网格线 选中基本柱图组件,单击组件上方的,设置标题“内容”为“人员流程统计 人/时”。 图18 设置标题 参考9,配置区域图。 选择右下方的区域图组件,在组件上方单击,配置组件数据。 “数据类型”选择“静态数据”,输入如下示例数据,并单击,格式化数据。 [{ "x": "01", "y": 20, "s": "在园人数" }, { "x": "02", "y": 30, "s": "在园人数" }, { "x": "03", "y": 45, "s": "在园人数" }, { "x": "04", "y": 20, "s": "在园人数" }, { "x": "05", "y": 60, "s": "在园人数" }, { "x": "06", "y": 80, "s": "在园人数" }, { "x": "07", "y": 140, "s": "在园人数" }, { "x": "08", "y": 200, "s": "在园人数" }, { "x": "09", "y": 145, "s": "在园人数" }, { "x": "10", "y": 40, "s": "在园人数" }, { "x": "11", "y": 70, "s": "在园人数" }, { "x": "12", "y": 60, "s": "在园人数" }, { "x": "13", "y": 80, "s": "在园人数" }, { "x": "14", "y": 16, "s": "在园人数" }, { "x": "15", "y": 87, "s": "在园人数" }, { "x": "16", "y": 77, "s": "在园人数" }, { "x": "17", "y": 60, "s": "在园人数" }, { "x": "18", "y": 20, "s": "在园人数" }, { "x": "19", "y": 60, "s": "在园人数" }, { "x": "20", "y": 80, "s": "在园人数" }, { "x": "21", "y": 55, "s": "在园人数" }, { "x": "22", "y": 68, "s": "在园人数" }, { "x": "23", "y": 70, "s": "在园人数" }, { "x": "24", "y": 24, "s": "在园人数" } ] 选中区域图组件,单击组件上方的,设置标题内容为“昨日在园人数统计 人/时”。 图19 设置组件标题 选中区域图组件,单击组件上方的,显示x轴网格线,打开y轴轴线开关,隐藏y轴网格线。 图20 显示x轴网格线 图21 打开y轴轴线隐藏网格线 单击页面上方的,保存后单击,预览效果。 图22 查看预览效果
  • 场景描述 人员来访统计大屏用于展示园区中人员相关信息,例如人员类型,人员流量及在园人数等。大屏页面构想,如图1所示。 图1 大屏页面效果 图1中大屏页面由下列组件拼装而成,组件介绍顺序为从上到下、从左到右。 表1 组件说明 组件 说明 文本编辑 文本编辑组件,用于展示标题,例如人员来访统计。 水平基本柱图 统计当前人员类型,如总公司员工、合作员工、访客人员、安防人员、保洁人员。 基本柱图 统计入园和出园人数。 区域图 统计昨日在园人数。
  • 开发移动端页面 登录AstroCanvas服务控制台,单击“进入首页”,进入AstroCanvas界面。 在项目列表页面,单击右上角的“+ 新建项目”。 选择“移动端”,输入项目名称为“Alarm”,单击“新建”。 图2 新建移动端项目 在项目中,单击“+新建页面”。 单击“新建空白页面”,输入页面标题“告警处理情况统计”,单击“新建”。 设置水平基本柱图组件。 在左侧全部组件中,拖拽“水平基本柱图”到页面开发操作区域,即画布区域。 图3 拖拽水平基本柱图组件 选择水平基本柱图组件,单击组件上方的,配置数据源,完成后单击“保存”。 “数据类型”选择“静态数据”,输入如下示例数据,并单击,格式化数据。 [{ "x": "10-01", "y": 311, "s": "待派单" }, { "x": "10-02", "y": 465, "s": "待派单" }, { "x": "10-03", "y": 927, "s": "待派单" }, { "x": "10-04", "y": 630, "s": "待派单" }, { "x": "10-05", "y": 65, "s": "待派单" }, { "x": "10-06", "y": 800, "s": "待派单" }, { "x": "10-07", "y": 247, "s": "待派单" }, { "x": "10-08", "y": 530, "s": "待派单" }, { "x": "10-01", "y": 311, "s": "已派单" }, { "x": "10-02", "y": 465, "s": "已派单" }, { "x": "10-03", "y": 345, "s": "已派单" }, { "x": "10-04", "y": 630, "s": "已派单" }, { "x": "10-05", "y": 65, "s": "已派单" }, { "x": "10-06", "y": 800, "s": "已派单" }, { "x": "10-07", "y": 247, "s": "已派单" }, { "x": "10-08", "y": 530, "s": "已派单" }, { "x": "10-01", "y": 311, "s": "处理中" }, { "x": "10-02", "y": 465, "s": "处理中" }, { "x": "10-03", "y": 927, "s": "处理中" }, { "x": "10-04", "y": 630, "s": "处理中" }, { "x": "10-05", "y": 1334, "s": "处理中" }, { "x": "10-06", "y": 800, "s": "处理中" }, { "x": "10-07", "y": 247, "s": "处理中" }, { "x": "10-08", "y": 530, "s": "处理中" }, { "x": "10-01", "y": 311, "s": "已关闭" }, { "x": "10-02", "y": 465, "s": "已关闭" }, { "x": "10-03", "y": 927, "s": "已关闭" }, { "x": "10-04", "y": 630, "s": "已关闭" }, { "x": "10-05", "y": 65, "s": "已关闭" }, { "x": "10-06", "y": 800, "s": "已关闭" }, { "x": "10-07", "y": 689, "s": "已关闭" }, { "x": "10-08", "y": 530, "s": "已关闭" } ] 选中水平基本柱图组件,单击组件上方的,“参考模板”为“蓝色渐变不排序”,并设置组件标题为“告警处理情况统计”。 图4 设置模板 图5 配置标题 选中水平基本柱图组件,单击组件上方的,打开“水平堆叠”开关,并将所有数据系列中的“数据标签”设置为“上”。 图6 打开水平堆叠开关 选中水平基本柱图组件,单击组件上方的,隐藏Y轴网格线。 图7 隐藏网格线 设置基本折线图组件。 在左侧全部组件中,拖拽“基本折线图”组件到移动端页面开发操作区域,即画布区域。 图8 拖拽基本折线图 选中基本折线图组件,单击组件上方的,设置组件数据源,完成后单击“保存”。 “数据类型”选择“静态数据”,输入如下示例数据,并单击,格式化数据。 [{ "x": "12-29", "y": 0, "s": "平均处理时长" }, { "x": "12-30", "y": 0, "s": "平均处理时长" }, { "x": "12-31", "y": 0, "s": "平均处理时长" }, { "x": "01-01", "y": 82, "s": "平均处理时长" }, { "x": "01-02", "y": 78, "s": "平均处理时长" }, { "x": "01-03", "y": 67, "s": "平均处理时长" }, { "x": "01-04", "y": 43, "s": "平均处理时长" } ] 选中基本折线图组件,单击组件上方的,设置组件标题“内容”为“告警平均处理时长统计”。 图9 设置组件标题 选中基本折线图组件,单击组件上方的,打开Y轴轴线“显示”开关。 图10 轴线显示 单击页面上方的,保存后单击,选择不同手机型号查看页面在移动端上的显示效果。 图11 查看预览效果
  • 请求示例 计划中批量添加测试用例 post https://{endpoint}/v1/projects/efdb403066474ab08836b9eeaaa23bca/plans/9b26f58ec29943f681804a6628779a23/testcases/batch-add { "service_id" : 13, "testcase_id_list" : [ "97b82412f1ca4628803b918c27ed09de", "97b82412f1ca4628803b918c27ed09de", "97b82412f1ca4628803b918c27ed09de" ] }
  • 响应示例 状态码: 500 Internal Server Error { "error_code" : "CLOUDTEST.00000001", "error_msg" : "接口调用失败错误信息", "error_detail" : { "failed" : [ { "error_code" : "CLOUDTEST.00000001", "error_msg" : "返回的错误信息", "testcase_id" : "efdb403066474ab08836b9eeaaa23bca" } ] } }
  • 响应参数 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息 状态码: 401 表5 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息 状态码: 404 表6 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息 error_detail ErrorDetailInfo object 批量操作失败的详情信息,全部失败没有该结构 表8 ErrorDetailInfo 参数 参数类型 描述 failed Array of ErrorCaseInfoBean objects 批量操作失败的资源的详情信息 表9 ErrorCaseInfoBean 参数 参数类型 描述 error_code String 失败错误码 error_msg String 失败错误信息 testcase_id String 失败资源信息
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 service_id 是 Integer 注册测试类型服务接口返回的服务id testcase_id_list 是 Array of strings 计划下包含的用例个数,数组长度小于50个,只能包含一种测试类型
  • 涉及接口 用户TestHub服务操作包括,注册新服务、获取已注册服务、更新已注册服务、删除已注册服务,其中获取、更新、删除操作需要注册过后方可进行,涉及接口如下: 新测试类型服务注册:未注册过服务的全新用户使用,将自己的服务名和服务域名注册。 用户获取自己当前已经注册的服务:已注册过服务的用户可以查询到自己服务的服务ID和服务名称。 更新已注册服务:已注册过服务的用户可以修改自己的服务名和服务域名。 删除已注册服务:已注册过服务的用户可以传入自己的服务ID删除掉自己已注册的服务。
  • 操作步骤 确定调用API鉴权时使用的Token。 查询token,详情请参见获取用户Token。 获取响应Header参数中X-Subject-Token对应的值。 确定Testhub服务名称及用户服务域名并注册。 接口相关信息 URL格式: POST /v1/services 接口请求参数说明详情,请参见新测试类型服务注册。 请求示例 POST https://{endpoint}/v1/services {endpoint}信息请从终端节点获取。 Body: { "service_name" : "这是一个测试类型名称", "server_host" : "https://xxx.xxx.xxx" } 响应示例 { "service_name" : "这是一个测试类型名称", "service_id" : 13 } 确定用户的Testhub服务已被注册成功。 接口相关信息 URL格式: GET /v1/services 接口请求参数说明详情,请参见用户获取自己当前已经注册的服务。 请求示例 GET https://{endpoint}/v1/services {endpoint}信息请从终端节点获取。 Body:无 响应示例 { "services" : [ { "id" : 13, "name" : "这是一个测试类型名称" } ] } 获取到返回的注册信息即证明用户已注册成功。 用户确定自己的Testhub服务注册成功后,可对服务进行删改操作。 删改操作建立在用户已成功注册自己的Testhub服务基础上。 更新服务信息: 接口相关信息 URL格式: PUT /v1/services/{service_id} 接口请求参数说明详情,请参见更新已注册服务。 请求示例 PUT https://{endpoint}/v1/services/{service_id} {endpoint}信息请从终端节点获取。 {service_id}从查询服务返回的service_id获取。 Body: { "service_name" : "这是修改后的测试类型名称", "server_host" : "https://xxx.xxx.xxx2" } 响应示例 { "service_name" : "这是修改后的测试类型名称", "service_id" : 13 } 删除服务信息: 接口相关信息 URL格式: DELETE /v1/services/{service_id} 接口请求参数说明详情,请参见删除已注册服务。 请求示例 DELETE https://{endpoint}/v1/services/{service_id} {endpoint}信息请从终端节点获取。 {service_id}从查询服务返回的service_id获取。 Body:无 响应示例 { "error_code" : "CLOUDTEST.00000000", "error_msg" : "失败原因XXXXX" }
  • 响应示例 状态码: 201 OK [ { "detail" : [ { "added" : [ { "id" : "ID", "name" : "名称" } ], "deleted" : [ { "id" : "ID", "name" : "名称" } ], "journalized_type" : "plan", "type" : "resource/attribute", "updated" : [ { "attribute_type" : "name", "new_value" : "tester", "old_value" : "test" } ] } ], "operate_time" : "2021-07-10", "operator" : { "id" : "ID", "name" : "名称" }, "plan_id" : "c7c2ddf2ea914164ac6ee76bf11a30ea", "project_id" : "9b26f58ec29943f681804a6628779a23" } ]
  • URI GET /v1/projects/{project_id}/plans/{plan_id}/journals 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目id,项目唯一标识,固定长度32位字符,获取方式请参见获取项目ID。 plan_id 是 String 测试计划id,测试计划的唯一标识,长度11-34位字符 表2 Query参数 参数 是否必选 参数类型 描述 offset 是 Long 起始偏移量,表示从此偏移量开始查询, offset大于等于0 最小值:0 最大值:999 缺省值:0 limit 是 Long 每页显示的条目数量,最大支持200条 最小值:1 最大值:200 缺省值:200
  • 响应参数 状态码: 201 表4 响应Body参数 参数 参数类型 描述 [数组元素] Array of TestPlanJournalList objects 项目下查询测试计划操作历史返回结构 表5 TestPlanJournalList 参数 参数类型 描述 detail Array of TestPlanJournalDetail objects 历史记录详情 operate_time String 变更时间 operator NameAndId object 测试计划迭代编号与迭代名称 plan_id String 测试计划id project_id String 项目id,项目唯一标识,固定长度32位字符 表6 TestPlanJournalDetail 参数 参数类型 描述 added Array of NameAndId objects 测试计划资源的添加记录(工作项或者测试用例) deleted Array of NameAndId objects 测试计划资源的移除记录(工作项或者测试用例) journalized_type String 表明该条变更记录的具体变更类型,例如测试用例(testCase),需求(issue) type String 表明该条变更记录属于基础信息变更还是资源(需求添加移除、用例添加移除)变更 updated Array of AttributeChange objects 测试计划基础信息变更,包括计划名称,测试类型,计划处理者、版本号、关联迭代、开始日期、截至日期、描述 表7 NameAndId 参数 参数类型 描述 id String 对象编号 name String 对象名称 表8 AttributeChange 参数 参数类型 描述 attribute_type String 发生变更的测试计划属性 new_value String 变更后的取值 old_value String 变更前的取值 状态码: 400 表9 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息 状态码: 401 表10 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息 状态码: 404 表11 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息 状态码: 500 表12 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息
  • 响应消息体 响应消息体通常以结构化格式返回,与响应消息头中Content-type对应,传递除响应消息头之外的内容。 对于获取用户Token接口,返回如下消息体。为篇幅起见,这里只展示部分内容。 { "token": { "expires_at": "2019-02-13T06:52:13.855000Z", "methods": [ "password" ], "catalog": [ { "endpoints": [ { "region_id": "xx-xxxxxx-1", ...... 当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所示。 { "error_msg": "The format of message is error", "error_code": "AS.0001" } 其中,error_code表示错误码,error_msg表示错误描述信息。
  • 响应示例 状态码: 201 Created { "assigned_user" : { "id" : "ID", "name" : "名称" }, "execute_count" : 4, "extend_info" : { "author" : { "id" : "1111", "name" : "名称", "time" : "2000-01-01 00:00:00" }, "defect_list" : [ { "id" : "ID", "name" : "名称" } ], "description" : "描述信息", "domain" : { "id" : "ID", "name" : "名称" }, "fixed_version" : { "id" : "ID", "name" : "名称" }, "issue" : { "id" : "ID", "name" : "名称" }, "label_list" : [ { "id" : "ID", "name" : "名称" } ], "module" : { "id" : "ID", "name" : "名称" }, "preparation" : "前置条件", "steps" : [ { "expect_result" : "[\"\\u003cp\\u003e预期结果1\\u003c/p\\u003e\",\"\\u003cp\\u003e预期结果2\\u003c/p\\u003e\"]", "test_step" : "[\"\\u003cp\\u003e步骤描述1\\u003c/p\\u003e\",\"\\u003cp\\u003e步骤描述2\\u003c/p\\u003e\"]" } ], "test_version_id" : "97b82412f1", "updator" : { "id" : "1111", "name" : "名称", "time" : "2000-01-01 00:00:00" } }, "name" : "某个测试用例", "project_id" : "2394921", "rank_id" : "2", "result_id" : "0", "service_id" : 13, "status_id" : "1", "testcase_id" : "97b82412f1ca4628803b918c27ed09de", "testcase_number" : "1234" }
  • 请求示例 创建自定义测试服务类型用例 post https://{endpoint}/v1/projects/efdb403066474ab08836b9eeaaa23bca/testcases { "extend_info" : { "assigned_id" : "1111", "description" : "这是一段用例描述信息", "fix_version_id" : "11111", "issue_id" : "11111", "label_list" : [ "标签名称" ], "module_id" : "模块号", "preparation" : "需要满足的前置条件", "steps" : [ { "expect_result" : "[\"\\u003cp\\u003e预期结果1\\u003c/p\\u003e\",\"\\u003cp\\u003e预期结果2\\u003c/p\\u003e\"]", "test_step" : "[\"\\u003cp\\u003e步骤描述1\\u003c/p\\u003e\",\"\\u003cp\\u003e步骤描述2\\u003c/p\\u003e\"]" } ], "test_version_id" : "11111" }, "name" : "testcase", "rank_id" : "2", "service_id" : 13, "testcase_number" : "1234" }
  • 响应参数 状态码: 201 表6 响应Body参数 参数 参数类型 描述 assigned_user AssignedUserInfo object 处理者信息 execute_count Integer 测试用例执行次数 extend_info ExtendInfo object 测试用例扩展信息 name String 测试用例名称 project_id String 软开云项目唯一标识 rank_id String 测试用例等级 result_id String 测试用例执行结果 service_id Integer 注册测试类型服务接口返回的服务id status_id String 测试用例状态 testcase_id String 用例uri,测试用例唯一标识,长度11-34位字符(字母和数字)。 testcase_number String 测试用例编号 表7 ExtendInfo 参数 参数类型 描述 author ExtendAuthorInfo object 创建者信息 defect_list Array of AssignedUserInfo objects 缺陷信息 description String 描述信息 domain AssignedUserInfo object 租户信息 fixed_version AssignedUserInfo object 迭代信息 issue AssignedUserInfo object 需求信息 label_list Array of AssignedUserInfo objects 标签信息 module AssignedUserInfo object 模块信息 preparation String 前置条件 steps Array of ExternalServiceCaseStep objects 测试步骤,数组长度小于10 test_version_id String 测试版本号 updator ExtendAuthorInfo object 更新者信息 表8 AssignedUserInfo 参数 参数类型 描述 id String id信息 name String 名称信息 表9 ExternalServiceCaseStep 参数 参数类型 描述 expect_result String 测试用例预期结果信息,长度为[0-500]位字符 test_step String 测试步骤描述信息,长度为[0-500]位字符 表10 ExtendAuthorInfo 参数 参数类型 描述 id String id信息 name String 名称信息 time String 时间信息 状态码: 400 表11 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息 状态码: 401 表12 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息 状态码: 404 表13 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息 状态码: 500 表14 响应Body参数 参数 参数类型 描述 error_code String 接口调用失败错误码 error_msg String 接口调用失败错误信息
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 extend_info 否 ExternalServiceCaseInfo object 测试用例其他扩展信息 name 是 String 页面上显示的用例名称,长度为[3-128]位字符 rank_id 否 String 测试用例等级,可选值为[0,1,2,3,4],不填时默认为2 service_id 是 Integer 该值由注册接口返回,取值范围为10-9999 testcase_number 否 String 用例编号,不填该值时会自动生成,长度为[3-128]位字符 表4 ExternalServiceCaseInfo 参数 是否必选 参数类型 描述 assigned_id 否 String 处理者id信息,长度为0-32。 description 否 String 测试用例描述信息,长度为[0-500]位字符 fix_version_id 否 String 迭代号,长度为[0-32]位字符 issue_id 否 String 用例关联的需求id信息,长度为[0-32]位字符 label_list 否 Array of strings 标签名称列表,数组长度小于等于30。单个名称长度不超过25。 module_id 否 String 模块号,长度为0-32。 preparation 否 String 执行该测试用例时需要满足的前置条件,长度为[0-500]位字符 steps 否 Array of ExternalServiceCaseStep objects 测试步骤,数组长度小于10 test_version_id 否 String 测试版本号,长度为1-64。 表5 ExternalServiceCaseStep 参数 是否必选 参数类型 描述 expect_result 否 String 测试用例预期结果信息,长度为[0-500]位字符 test_step 否 String 测试步骤描述信息,长度为[0-500]位字符
  • 响应示例 状态码: 200 OK { "values" : [ { "name" : "测试用例", "owner" : { "id" : "id", "name" : "name" }, "status" : { "id" : "id", "name" : "name" }, "result" : { "id" : "id", "name" : "name" }, "module" : { "id" : "id", "name" : "name" }, "iteration" : { "id" : "id", "name" : "name" }, "id" : "001rv8lk4he", "number" : "10010", "description" : "用例描述", "rank_id" : "2", "project_id" : "7672757", "execution_type" : { "id" : "id", "name" : "name" }, "test_type" : { "id" : 1, "name" : "显示值" }, "create_info" : { "time" : "2021-11-06 00:00:01", "timestamp" : 1660617231016, "user_id" : "efdb403066474ab08836b9eeaaa23bca", "user_name" : "测试Tester" }, "execute_info" : { "time" : "2021-11-06 12:00:00", "timestamp" : 1660617231016, "duration" : "00:00:10", "user_id" : "efdb403066474ab08836b9eeaaa23bca", "user_name" : "测试Tester", "execute_times" : 1 }, "associate_issue_info" : { "associate" : true, "issue_id" : "4654022505049243648", "tracker_id" : "1", "board_id" : "443ef10e6c954b00a24ed6ce6864854a", "tracker_name" : "IR" }, "associate_defect_info" : { "associate" : true, "associate_count" : 1 } } ], "total" : 1 }
共100000条