bdwm-orion
v1.0.13
Published
百度外卖猎户座: 命令行web前端test case运行工具
Downloads
4
Readme
Orion猎户座: 命令行test case运行工具
安装
- 第一步: 安装NodeJS运行环境
- 第二步:
npm install -g bdwm-orion
使用
传递文件:
bdwm-orion --file example_test_case_file.json
直接传递JSON格式内容:
bdwm-orion '{"option":{"url":"http://waimai.baidu.com"},"operation":[]}'
传递额外再JSON编码一次的内容:
bdwm-orion --json '"{\"option\":{\"url\":\"http://waimai.baidu.com\"},\"operation\":[]}"'
传递Base64编码的内容:
bdwm-orion --base64 'eyJvcHRpb24iOnsidXJsIjoiaHR0cDovL3dhaW1haS5iYWlkdS5jb20ifSwib3BlcmF0aW9uIjpbXX0='
** 注意: ** 如果JSON内容是由不受信任的用户直接编写的,则一定要进行Base64或额外的一层JSON编码包装以防止错误或潜在的攻击。
Test Case文件结构
一个Test Case定义了一个自动测试流程,结构上是一个如下的JSON对象:
{
"option": {
"url": "http://waimai.baidu.com/waimai?qt=about",
"ignore_page_error": true
},
"operation": [
{
"action": "click",
"target": ".footer-item.help a:eq(1)"
},
{
"action": "assert",
"target": "document.location.href",
"expect": "http://waimai.baidu.com/waimai?qt=helpusage"
}
]
}
选项
以下为option中可定义的内容:
- url: 测试起始网址。默认"about:blank"
- cookie: 加载页面所使用的cookie值。默认空字符串
- useragent: 加载页面所用UA标识。默认同chrome浏览器
- viewport: 测试页面所使用的屏幕尺寸。默认"1360x670"
- ignore_script_error: 页面js报错不触发报警。默认false
- ignore_resource_error: 资源加载错误不触发报警。默认true
- resource_timeout: 资源加载超时时间(毫秒)。默认5000
- ready_delay: 持续多少毫秒内没有进一步资源加载才执行下一步操作。默认1500
- timeout: 测试总体超时时间(毫秒),超时会触发报警。默认60000
- report: 报告输出路径,可以是文件路径也可以是发送POST请求的网址。报告结构见后文
- id: 任务id,仅用于在报告中回传
- loglevel: 日志输出级别,可为debug、normal、error、silent。默认normal
以上内容除在主体JSON内容内传入外,均可以在命令行以参数形式传入覆盖,如
bdwm-orion --file example_test_case_file.json --cookie 'session_id=ABCDEF; TOKEN=FEDCBA;'
强烈建议以参数形式传入id和report属性,以保证即使文件解析失败也可发送报告。
操作
以下为operation中可定义的操作类型(action)及其额外参数说明:
- click: 点击页面元素
- target: 用selector语法指定被点击的目标元素
- wait: 等待资源加载,默认true
- input: 设定表单域填入值
- target: 用selector语法指定目标元素
- value: 设定的值
- submit: 提交表单
- target: 用selector语法指定被提交的表单
- sleep: 等待指定时间
- duration: 等待的毫秒数,默认2000
- wait: 等待资源加载,默认false
- until: 通过每0.5秒1次的轮询,等待指定的条件
- condition: 所等待的条件表达式,默认true
- assert: 断言测试,如果测试失败则终止测试并发送报警
- eval: 断言表达式
- expect: 期望值,若前置>、>=、<、<=、=、!=、!、@、!@等符号,则期望值将作为表达式运算。 (@表示包含,可用于数组或字符串,!表示非)
- script: 在页面内执行JS脚本
- content: 脚本内容
- wait: 等待资源加载,默认true
- navigate: 跳转到指定网址
- url: 跳转目标网址
每一个操作都可设定一个name属性,将在报告中回传。
报告结构
如果是文件,报告会是个JSON格式,如果提供了网址,报告则以x-www-form-urlencoded格式发送POST请求。
报告包含以下内容:
- id: 传入的id
- status: 运行结果状态码,除0以外的情况都应该报警
- 0: 所有测试正常
- 1: 配置文件解析错误
- 2: 测试超时
- 3: 页面存在脚本报错
- 4: 存在加载失败的资源
- 5: 操作或断言失败
- message: 运行结果描述
- snapshot: 出错时的base64编码页面截图(配置文件解析错误时没有截图)
- snapshot_html: 出错时的网页html字符串
- detail: JSON数组,包含每一步操作的执行情况,其子元素结果如下
- name: 传入的操作名称
- action: 操作类型
- 操作的其他属性
- status: 操作状态码
- 0: 尚未执行
- 1: 执行正常
- 2: 执行失败
- failed_res: JSON数组,加载失败的资源url列表
- failed_res_detail: JSON数组,加载失败的资源错误信息
- console_log: 字符串,页面控制台输出内容
- console_error: 字符串,页面控制台报错内容