接口测试平台代码实现156:私有client证书设置

简介: 接口测试平台代码实现156:私有client证书设置

在很多公司的具体接口测试业务中,内部的接口都不是随随便便写个脚本就可以请求通的。


   很多时候需要client证书,跟着请求一起发出去,服务器那边检测通过,才可以正常给处理和返回。


   当然,可能很多粉丝都说自己公司目前并没有需要这种证书,如果这种情况,那么建议也还是看一看本章节,起码混个眼熟。以后跳槽的新公司万一要用,自己也不至于大脑空白。


   这个client证书从哪来呢?当然是从你们公司的开发手里要。那么要怎么使用呢?


   在charles中,我们是打开后这样做:


image.png


这里就是上传证书的地方了。注意首次使用这个地方,还需要你设置密码才可以。


点击Add。


image.png

这里我们除了写*,代表所有请求都使用。


然后还要选择导入一个PEM 或者 P12, 这俩个就是证书了。俩个格式,任选其一,主要看开发给你的证书后缀是什么,是.p12就直接导入。是.pem,就先用pycharm打开,然后复制粘贴即可,导入后一路ok即可。


不过本教程中,如何使用charles并不是我们要研究的重点,而是要在平台上如何安装这个证书才是我们要做的事。


平台的底层,目前用的requests进行请求的,所以,我们得先来研究,request如何夹带证书。


按照官方说法,在reuqests里直接加上cert参数,值为证书的路径即可。


req = requests.get(url,headers = headers, cert='./Imapp/static/client.pem')


比如上面这句中,cert 的值 就是一个证书,注意这里的后缀是.pem的,经过作者亲测和落地,.pem格式证书才能使用在请求中。


如果开发给你的是.p12证书,那么你就需要去百度搜个转换算法,把这个.p12改成.pem了。(如果.p12可以用,欢迎小伙伴留言反馈,必有重谢。)


所以我们现在的设计就很明确了。


在每个项目内增加一个属性,就是证书的【名字】和【是否启用】选项。

不同项目的证书完全隔离,每个接口都可选是否启用证书。在项目设置里,设置上传证书功能。


好,那我们说干就干。


打开我们的用例设置html:P_project_set.html:


找到地方,设置一个上传文件的功能。

代码如下:

image.png

<form  style="" id="upload_file" action="/cert_upload/{{ project.id }}/" method="post" enctype="multipart/form-data">
    <input type="file" name="fileUpload" style="width: 20%;margin-left: 40%;border:1px solid #fcbfbf;"/>
         <br>
    <button type="submit" style="width: 20%;" class="btn" > 上传证书 </button>
    </form>

效果如下:

image.png

注意代码中我的input的name是 fileUpload 之后我们在后台取的时候 要用这个。


然后去写urls.py吧:

image.png

注意,我们要带上这个项目id,以便后台使用。


然后去后台写好这个函数,views.py:

image.png

在开始写之前,我们要先设计好这个函数。


这个函数要做的是首先是把上传的证书 拿出来。

image.png


拿出来后,我们要进行保存到指定目录下。但是避免名称重复,所以我们在存的时候,会给原始的名字前面加上”项目id“ 来保存,而这种静态资源当然是保存到static目录下了。

image.png


选中一个.pem证书文件,点击上传按钮。

image.png

打印结果:


image.png

我在前面加上了CERT_13_作为前缀。这样用来区分我们后续的不同项目内的证书。


然后继续 写存储代码:

image.png

# 上传证书文件
def cert_upload(request,pid):
    file = request.FILES.get("fileUpload", None)  # 靠name获取上传的文件,如果没有,避免报错,设置成None
    if not file:
        return HttpResponseRedirect('/project_set/%s/'%pid)  # 如果没有则返回
    new_name = 'CERT_'+pid+'_'+str(file) # 设置好这个证书的名字
    destination = open("MyApp/static/" + new_name, 'wb+')  # 打开特定的文件进行二进制的写操作
    for chunk in file.chunks():  # 分块写入文件
        destination.write(chunk)
    destination.close()
    return HttpResponseRedirect('/project_set/%s/' % pid)  # 正常返回

测试结果,成功:

image.png



本节内容到此结束。


下一节:我们在数据库中设置 端的 一个新属性:绑定的证书名。


相关文章
|
1月前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
26 1
|
2月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
|
1月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
28 2
|
3天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
18 0
|
17天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出&quot;验证成功&quot;,否则输出&quot;验证失败&quot;。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。
|
1月前
|
缓存 运维 Serverless
应用研发平台EMAS产品常见问题之测试检查更新没有反应如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
测试技术 数据库 Python
python测试代码(二)
python测试代码(二)
19 0
|
1月前
|
机器学习/深度学习 人工智能 监控
视觉智能平台常见问题之体验产品的美颜测试关掉如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
24 1
|
1月前
|
Java 测试技术
单元测试编写可测试代码
单元测试编写可测试代码
19 2
|
17天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
26 0

热门文章

最新文章