前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HttpRunner-2-用例组织

HttpRunner-2-用例组织

作者头像
Python研究所
发布2022-06-17 09:03:26
2680
发布2022-06-17 09:03:26
举报
文章被收录于专栏:大飞的部落阁

测试用例格式

HttpRunner 的测试用例支持两种文件格式:YAMLJSON

JSONYAML 格式的测试用例完全等价,包含的信息内容也完全相同。

对于选择哪种格式取决于您的心情。

测试用例结构

HttpRunner 中,测试用例组织主要基于三个概念:

  • 测试套(testsuite):对应一个文件夹,包含一个或者多个测试用例文件(YAML/JSON
  • 测试用例(testcase):对应一个 YAML/JSON 文件,包含单个或多个测试步骤
  • 测试步骤(teststep):对应 YAML/JSON 文件中的一个 test,描述单次接口测试的、接口请求、解析响应结果、校验结果等

对于单个 YAML/JSON 文件来说,数据存储结构为 list of dict 的形式,其中可能包含一个全局配置项(config)和若干个测试步骤(test)。

  • config:作为整个测试用例的全局配置项
  • test:对应单个测试步骤(teststep),测试用例存在顺序关系,运行时将从前往后依次运行各个测试步骤

对应的yaml格式如下:

代码语言:javascript
复制
config:
    name: "demo testcase"
    ...

teststeps:
-
    name: demo step 1
    ...
-
    name: demo step 2
    ...

变量上下文

在测试用例内部,HttpRunner 划分了两种变量上下文类型(context)。

config:作为整个测试用例的全局配置项,作用域为整个测试用例; test:作用于测试步骤、会继承或覆盖 config 中定义的内容; 即:test中的定义的变量比config中定义的变量优先级高。

各个测试步骤(test)的变量空间相互独立,互不影响; 如需在多个测试步骤(test)中传递参数值,则需要使用 extract 关键字,并且只能从前往后传递。

config

样例:

代码语言:javascript
复制
config:
    name: "demo testcase"
    variables:
        device_sn: "ABC"
        username: ${ENV(USERNAME)}
        password: ${ENV(PASSWORD)}
    base_url: "https://getman.cn/mock"
    setup_hooks:
        - ${hook_print(setup)}
    teardown_hooks:
        - ${hook_print(teardown)}

test

样例:

代码语言:javascript
复制
-
    name: demo step 1
    api: api/demo_api.yml
    variables:
        user_agent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
        device_sn: $device_sn
    extract:
        - token: content.name
    validate:
        - eq: ["status_code", 200]
    setup_hooks:
        - ${hook_print(setup)}
    teardown_hooks:
        - ${hook_print(teardown)}

常用字段说明

extract

用于数据提取和传递。

支持多种提取方式:

响应结果为 JSON 结构,可采用.运算符的方式,例如headers.Content-Typecontent.success; 响应结果为 text/html 结构,可采用正则表达式的方式,例如blog-motto\">(.*)</h2>

validate

用于断言。

支持两种格式:

代码语言:javascript
复制
validate:
        - eq: ["status_code", 200]
代码语言:javascript
复制
validate:
        - check: status_code
          comparator: eq
          expect: 200

hooks

钩子函数,在特定的地方进行特定的调用。

常用的断言

代码语言:javascript
复制
"eq", "equals", "==", "is" 意为:	"实际结果"和"期望结果"相等
"lt", "less_than" 意为:	"实际结果"小于"期望结果"
"le", "less_than_or_equals" 意为:	"实际结果"小于等于"期望结果"
"gt", "greater_than" 意为:"实际结果"大于"期望结果"
"ge", "greater_than_or_equals" 意为:	"实际结果"大于等于"期望结果"
"ne", "not_equals" 意为:	"实际结果"和"期望结果"不相等
"str_eq", "string_equals" 意为:	转义字符串后对比,"实际结果"和"期望结果"相等
"len_eq", "length_equals", "count_eq" 意为:	字符串或list长度,"实际结果"和"期望结果"相等
"len_gt", "count_gt", "length_greater_than", "count_greater_than" 意为:	"实际结果的长度"大于"期望结果"
"len_ge", "count_ge", "length_greater_than_or_equals","count_greater_than_or_equals" 意为: "实际结果的长度"大于等于"期望结果"
"len_lt", "count_lt", "length_less_than", "count_less_than" 意为:	"实际结果的长度"小于"期望结果"
"len_le", "count_le", "length_less_than_or_equals","count_less_than_or_equals"意为: "实际结果的长度"小于等于"期望结果"
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试用例格式
  • 测试用例结构
  • 变量上下文
    • config
      • test
        • 常用字段说明
          • extract
          • validate
          • hooks
      • 常用的断言
      相关产品与服务
      数据保险箱
      数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档