接口测试加解密与多环境测试
加密方法
- 请求加密:摘要加密 把原文或者原始请求中的部分字段做摘要算法的加密,把加密后的结果也放到原始请求中发送。
- 响应加密:返回的整个响应或者响应中的部分字段被加密,我们需要找到解密办法,还有一个名字叫摘要算法。
加密与签名的区别
- 加密通常代表是对称加密,这种加密是可以解密的。比如base64,主要用于的数据传输。
- 签名通常代表是非对称加密,这种加密不可逆不可解密。比如rsa、md5。通常用于认证内容未被篡改。
解密方式
- 自己解决通用解密算法
- 需要研发提供加解密的lib
- 需要加密方提供远程解析服务,这样算法仍然是保密的
import base64 import json import requests class TestEnCode: origin_url = 'http://0.0.0.0:8000/json_1.txt' url = "http://0.0.0.0:8000/base64_1.txt" def test_get(self): r = requests.get(url=self.url) print(r.content) data = self.decode(r.content) j = json.loads(data) print(j) assert len(j['topics']) == 2 def test_encode(self): r = requests.get(url=self.origin_url) print(r.json()) assert len(r.json()['topics']) == 2 def decode(self, raw): return base64.b64decode(raw) def test_base64_api(self): """返回结果有加密""" res = ApiRequest() res_data = { "schema": "http", "encoding": "base64", "method": "get", "url": "http://docker.testing-studio.com/base64_1.txt", "headers": None } j = res.send(res_data) assert len(j['topics']) == 2 def test_api(self): """返回结果没有加密""" res = ApiRequest() res_data = { "schema": "http",# 请求方式 "encoding": "",# 是否加密 "method": "get",# 请求方法 "url": "http://0.0.0.0:8000/json_1.txt", "headers": None } j = res.send(res_data) assert len(j['topics']) == 2 class ApiRequest: """处理接口返回数据加密""" def send(self, data: dict): if data["schema"] == "http": # 把host修改为iP,并附加host到headers """支持多环境测试""" env = { "docker.testing-studio.com": { "test": "192.168.1.37", "dev": "192.168.2.14" }, "default": "test" } # 井host修改为IP data["url"] = str(data['url']).replace("docker.testing-studio.com", env['docker.testing-studio.com'][env['default']]) # 添加host到headers中 data["headers"]["host"] = "docker.testing-studio.com" res = requests.request(data["method"], data['url'], headers=data["headers"]) if data['encoding'] == 'base64': return json.loads(base64.b64decode(res.content)) else: return json.loads(res.content) elif "dubbol" == data['schema']: pass elif data['urllib'] == "urllib": pass elif data['schema'] == "websocket": pass else: pass
相关推荐
jeason 2020-07-20
huimeiad 2020-11-23
luguanyou 2020-10-05
Mynamezhuang 2020-09-18
充满诗意的联盟 2020-08-23
yfightfors 2020-08-16
gaitiangai 2020-07-19
JessePinkmen 2020-07-19
phpboy 2020-07-19
嵌入式移动开发 2020-07-05
HappinessCat 2020-07-05
zhanglao 2020-06-26
Henryztong 2020-06-25
Testingba工作室 2020-06-22
starzhangkiss 2020-06-22
maxelliot 2020-06-21
xiaouncle 2020-06-20
chichichi0 2020-06-16