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

HttpRunner-4-Extract

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

什么是 extract

extract 顾名思义,我们就可以猜到其实用来做数据提取和引用的。

使用场景

通常,测试框架中都有获取数据并且将其存储到变量的机制。httprunner 也不例外,extract 就是用来提取变量并且供后续步骤使用。

在接口测试中,大多数接口都是需要鉴权的,而我们不可能在每个测试步骤,甚至测试用例中重复进行 token 的获取。通常,我们会采用如装饰器,方法调用,变量引用等手段解决这个问题。

httprunner 中,我们可以通过 extract 在用例的开始获取一次 token 并将其保存到变量中,这样后续的 apistep 就可以直接使用变量了。当然我们也可以通过 debugtalk 实现。

本文主要介绍下 extract 提取数据和引用。

extract 在 case 中

case 中有两个 step,假设我们的 step1 是获取 token 并且保存到变量,step2 会携带 token 进行接口的访问。

case

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

teststeps:
-
    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)}
-
    name: demo step 2
    api: api/demo_api2.yml
    variables:
        token: $token
    validate:
        - eq: [reason, OK]

以上代码中的 contentstatus_code 都是内置的关键字,我们可以直接使用,而且你会发现它们和 Requests 中的关键字都是同名的。

demo_api2.yml

demo_api2 中的 headers 中携带了 Token 变量,Token 的内容就是 extract 保存的 token

代码语言:javascript
复制
name: demo api 2
variables:
    var1: Chrome1.2
    var2: value2
request:
    url: /
    method: GET
    headers:
        User-Agent: $var1
        Content-Type: "application/json"
        Token: $token
    json:
        key: $var2
validate:
    - eq: ["status_code", 200]

测试报告中的体现

step1response

step2headers

以上,我们可以看到从 step1extracttoken 值已经成功保存并传递到了 step2headers 中。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 extract
  • 使用场景
  • extract 在 case 中
    • case
      • demo_api2.yml
        • 测试报告中的体现
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档