• 测试平台系列(92) 让http请求支持文件上传


    大家好~我是米洛

    我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持。

    欢迎关注我的公众号米洛的测开日记,获取最新文章教程!

    回顾

    上一节呢,我们编写了oss的客户端这块内容。但其实我们是有目的的,我们知道,我们有时候测试一些接口,比方说: 批量导入商品,这种情况下,我们是要给接口发送一个文件(excel或者csv)。

    那怎么保管我们的测试数据呢,那就该oss发挥它的作用了。以往我们做测试,都会放一个目录保存测试数据,现在只不过是把数据放到了oss之中,其实道理都一样。

    今天我们就来实现http请求支持oss文件上传。在此之前我们先得修复几个bug(还挺多的,但只列一个典型)

    bug警示

    • 没有断言数据的时候报错

    需要2个返回值,但是咱在没有断言的时候只给了一个,属实马虎。

    效果图

    普通模式

    编辑模式

    思路

    我们之前为了图方便,在有body的http请求里面,强行让http请求二选一:

    • 要么json

    • 要么form表单

      针对这样文件的形式,就没法二选一了,所以我们必须要存储一个字段:

      body_type,这个字段用来告诉我们body是什么类型的,也就对应这里的数据:

    0代表none, 2代表form-data 1代表raw(json) 3代表x-www-form-urlencoded, 后续的依次排列。

    所以我们要去用例加个body_type,并且默认为1(因为目前我们的接口类型大部分json的).

    接着我们在http请求的时候,根据不同的数据类型返回不同的body即可。

    新增字段body_type

    修改app/models/test_case.py,新增body_type字段,修改处我已经红框标注。

    调整pydantic

    之前我们的schema数据都存放在router下面,后来存在一些循环引入问题。所以我把请求入参这些数据都放到了models下面,特此说明一下。

    添加配置

    以往啊,我们很喜欢写1,2,3,4:

    if case_type == 1:
    

    这种代码,但其实这种东西完全可以放到config里面,这样的话我们如果要变换对应的规则,就很方便,而且看1,2,3,4还不好回忆这是什么类型。

    今次,我一定要换。

    在class Config下面新增子类: class BodyType:

    改造Http请求客户端

    由于我们发json也好,form也好,改变的一般是这个方法:

    类似这样的,如今我们多了一个新的参数,我打算封装一个新的方法,因为这块http在线请求需要用到,而case的执行也得用到。

    话不多说,我们直接上代码:

    这边普通form的话,data接收的是一个dict,json的话采用json去接收数据,而文件这种,则采用FormData:

    由于我们存储body里面带有oss的文件信息,我们需要先解析一下数据,也就是先反序列化,接着取对应的文件或者文本,组成FormData。

    • 运行case相关改动

    之前我们有为json类型请求添加header的操作,如今都放到http client里面去做了,所以这边可以稍微简化下。

    • replace_body改动

    这里需要稍微改动下,只有json类型的时候才替换body的数据,因为目前这个替换只支持字典类型。

    前端部分

    前端部分我写的太烂了,有兴趣去看下源码吧(我自己都看不下去),活生生的屎山,真的。

    不过我还是各种土方法给解决了,http那块我打算就到此为止了。

    我加了一个可编辑表格的组件,这个与之前的有不同,因为这个组件需要根据选择的是FILE还是TEXT来决定VALUE单元格的输入控件:

    这里切换为TEXT后,右侧的选择框会变成输入框。

    可以看到,我们调用自己的http上传文件方法(upload),完成了文件上传的测试功能(如果能重来,我肯定不肝这个,太累了,bug小王子。)

  • 相关阅读:
    ASP.NET 备份恢复SqlServer数据库
    ASP.NET MVC3.0 Razor 视图模板 语法
    ASP.NET 缓存
    代码生成框架
    C#中HashTable的用法
    C# 概念 委托和事件
    Web Service 系列 → Web Service 简介
    CDN 内容分发网络
    HarmonyOS开发者创新大赛
    #2020征文手表#【图解鸿蒙】多组示例演示三个样式的组合用法
  • 原文地址:https://www.cnblogs.com/we8fans/p/16180340.html
Copyright © 2020-2023  润新知