Python实现加密接口测试方法步骤详解
本文详细解析使用Python进行加密接口测试的完整流程。涵盖从原始参数到JSON字符串的组装、基于特定规则(如拼接key)生成MD5签名sign,以及最终通过requests库发送GET请求的全过程。文中提供了包含appId、code及app_secret_key的完整代码示例,适用于需要处理数据加密与签名验证的接口测试场景。
加密接口测试概述
在进行接口测试时,面对需要加密传输的接口,应如何着手进行测试?
Python实现加密接口测试全流程
首先,可以编写一个独立的函数或方法,用于处理待加密的参数。具体操作是将原始数据传入该函数,经过加密处理后,将生成的加密数据作为最终传输的内容发送出去。
其次,关于加密算法的选择,需依据具体产品要求及业务场景而定。无论是采用AES对称加密,还是公钥私钥非对称加密,均应根据实际需求灵活选择。
此外,还需注意编码问题。若仅需进行编码处理而非加密,可直接使用Base64编码对需传输的数据进行转换,获取Base64字符串后再进行后续传输。
需要区分编码与加密的区别。真正的加密流程要求先对参数进行加密处理,然后在数据传输过程中,对传输数据再次进行加密和封装,最后才发送出去。
若使用JMeter进行接口测试,可通过Post-Processor结合Beanshell脚本实现加密与解密逻辑。随后从日志中提取参数,具体的加密算法实现仍取决于业务需求。
不同的测试工具提供的内置加密算法存在差异,因此加密算法的具体实现方式会因所选工具的不同而有所区别。
如果不依赖现成的测试工具,应如何实现加密接口的测试?参考以下Python代码示例。
核心代码实现:参数组装与签名计算
#coding=utf-8
"""
===========================
Author:多测师_王sir
Time:2020/6/2 10:12
Wechat:15367499889
Company:上海多测师信息有限公司
===========================
"""
import requests
import hashlib
import json
# 组建接口
# 第一步:拿到接口入参==》2个参数
# data 必须参数,对应的值是正常传递的参数组装成json字符串,组装的json字符串里面必须包含appId,
# sign 必须参数,对应得值是data值得md5值。
BASE_URL = 'http://118.24.XXX.XXX:8080/api/login?'
appId=4001
code='033qdUtz0LcJsc19tZxz09cTtz0qdUt6'
app_secret_key='dc6e426478b2d29a8e1ad70eb48660f4'
# 第二步:组装data参数
data={"appId":4001,"code":"033qdUtz0LcJsc19tZxz09cTtz0qdUt6"}
# a = str(data)
# print a
# b = '{'+a[45:58] + ','+a[1:43]+'}'
# print b
# 第三步:组装加密字符串拿到sign签名
value = 'data={"appId":4001,"code":"033qdUtz0LcJsc19tZxz09cTtz0qdUt6"}&key=dc6e426478b2d29a8e1ad70eb48660f4'
md5 = hashlib.md5()
md5.update(value)
sign = md5.hexdigest()
print sign
# 第四步:发送接口请求
dic = {"data":'{"appId":4001,"code":"033qdUtz0LcJsc19tZxz09cTtz0qdUt6"}',"sign":sign}
params = {
"code":'033qdUtz0LcJsc19tZxz09cTtz0qdUt6',
"params":json.dumps(dic)
}
response = requests.get(url=BASE_URL,params=params)
print response.text
print response.url接口返回结果:{"data":"b363e1c071d84757bf164121bad91ede","statusCode":"200"}
以上即为本文介绍的全部内容,希望能为读者的学习提供有益帮助,同时也欢迎大家继续支持本站获取更多技术资源。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













