HttpRunner-04-extract

简介: HttpRunner-04-extract

什么是 extract


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


使用场景


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


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


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


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


extract 在 case 中


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


case


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 中的 headers 中携带了 Token 变量,Token 的内容就是 extract 保存的 token


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 中。


感谢您的阅读,别忘了关注,点赞,评论,转发四连哟!


相关文章
|
6天前
|
存储 设计模式 测试技术
怎么基于Pytest+Requests+Allure实现接口自动化测试?
该文介绍了一个基于Python的自动化测试框架,主要由pytest、requests和allure构成,采用关键字驱动模式。项目结构分为六层:工具层(api_keyword)封装了如get、post的请求;参数层(params)存储公共参数;用例层(case)包含测试用例;数据驱动层(data_driver)处理数据;数据层(data)提供数据;逻辑层(logic)实现用例逻辑。代码示例展示了如何使用allure装饰器增强测试报告,以及如何使用yaml文件进行数据驱动。
|
1月前
|
Shell Python
Python Stock guess_indicators_daily_job.py文件的调整
Python Stock guess_indicators_daily_job.py文件的调整
22 1
|
数据采集 Python
python爬虫:scrapy框架SelectorList.extract()和SelectorList.extract_first()的区别
python爬虫:scrapy框架SelectorList.extract()和SelectorList.extract_first()的区别
|
Python
Scrapy中get和extract_first的区别
Scrapy中get和extract_first的区别
96 0
|
自然语言处理 测试技术 Python
基于UIAutomation+Python+Unittest+Beautifulreport的WindowsGUI自动化测试框架common目录解析
基于UIAutomation+Python+Unittest+Beautifulreport的WindowsGUI自动化测试框架common目录解析
452 0
基于UIAutomation+Python+Unittest+Beautifulreport的WindowsGUI自动化测试框架common目录解析
【pytest官方文档】解读fixtures - 4. 一次请求多个fixtures、fixtures被多次请求
【pytest官方文档】解读fixtures - 4. 一次请求多个fixtures、fixtures被多次请求
|
测试技术 API 数据库
【pytest官方文档】解读fixtures - 1.什么是fixtures
【pytest官方文档】解读fixtures - 1.什么是fixtures
【pytest官方文档】解读fixtures - 2. fixtures的调用方式
【pytest官方文档】解读fixtures - 2. fixtures的调用方式