IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> HttpRunner3进行接口测试 csv文件参数化数据驱动 -> 正文阅读

[开发测试]HttpRunner3进行接口测试 csv文件参数化数据驱动

  1. 使用Pycharm创建Python3虚拟环境
    请添加图片描述

  2. 安装HttpRunner3

    进入虚拟环境终端,输入pip3 install httprunner

  3. 创建工程

    输入httprunner startproject demo , 其中demo为项目工程名字

  4. 获取接口请求的har文件

    1. 使用谷歌浏览器开发者工具,右键目标接口,存储为har文件
      请添加图片描述

    2. 使用Fiddler
      请添加图片描述

      在右侧My Sessions找到刚刚存储的session然后选择export为HTTPArchive v1.1即可

  5. 基于har文件生成测试用例

    将接口的har文件存放于第三步创建工程的har目录下

    cd 进入har文件夹下,运行 har2case [xxx.har] 生成对应接口har文件的 pytest 的测试文件

  6. 基于csv文件准备测试数据

    创建csv文件testdata/Data.csv,录入测试数据,格式为

    caseName,,row1,,row2
    case01,,123,,456
    case02,,789,,1011
    

    这里代表有两条测试用例,每一条测试用例两个参数分别为row1和row2

  7. 使用csv中的参数驱动测试

    在生成的接口的test Py文件里,在类中添加下列函数:

    @pytest.mark.parametrize(
        "param",
        Parameters({"caseName-row1-row2":"${parameterize(testdata/Data.csv)}"})
    def test_start(self, param):
        super().test_start(param)
    

    这样就可以在请求参数中使用 “$row1” 来引用参数 row1,断言中也可以如此:

    .with_json(
    {
        "components": "$row1",
        "use_case": "$row2",
    }
    )
    .validate()
    .assert_equal("status_code", "$row2")
    
  8. 执行测试用例

    运行命令 hrun xxxx_test.py or hrun xxx/xxx/ 参数可以是py文件或者存放py文件夹,后者会执行该文件夹下所有的测试py文件

    若要生成测试报告可以使用 hrun xxx/xxx --html=reports/report.html 即可以在reports文件夹下创建report.html文件测试报告

  • 通过debugtalk.py编写自定义函数(非必需)

    通过在debugtalk.py编写函数,我们就可以在测试执行的步骤中引用相应的函数,通过"${functionName($param)}"来进行调用,其中fuctionName是函数的名称,param是要传入的参数

    例如在进行断言时,**由于从csv文件读取的参数为str类型,在进行断言时若接口返回参数不是str类型,就需要进行类型转换,**这里就可以在debugtalk.py里添加函数用于处理返回结果:

    # csv读取数据均为str,而body不存在时类型为None,导致无法断言,所以需要将None转为''
    def process_response_get_poi_by_geo(response):
        body = response.body
        if "error" in body:
            # body.error类型转为str以便进行断言
            body["error"] = str(body["error"])
        else:
            body["error"] = ''
    
        if "data" in body:
            if "results" in body["data"]:
                # 获取结果列表长度以便进行长度校验
                body["length"] = str(len(body["data"]["results"]))
                return
        body["data"] = {"results": [{"source": ""}]}
        body["length"] = '0'
    

    然后在测试文件里通过 "${process_response_get_poi_by_geo()}" 进行调用

    .teardown_hook("${process_response_get_poi_by_geo($response)}")
    
    • teardown_hooks: 在 HTTP 请求发送后执行 hook 函数,主要用于测试后的清理工作;也可以实现对响应的 response 进行修改,例如进行加解密等处理。

    更多参考:https://docs.httprunner.org/

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 10:07:54  更:2021-08-06 10:08:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 23:09:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码