1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【python做接口测试的学习记录day10——pytest自动化测试框架之接口加密】

【python做接口测试的学习记录day10——pytest自动化测试框架之接口加密】

时间:2020-12-30 21:55:35

相关推荐

【python做接口测试的学习记录day10——pytest自动化测试框架之接口加密】

通常出于安全性考虑,开发会对接口参数进行加密,加密方式有很多种,例如MD5、Base64、RSA双密钥加密方式等,下面我们以MD5加密方式的登录接口为例,此接口对密码进行了加密,如果测试时直接使用未加密的原密码去测试接口得到的肯定是无法登录成功的。

一、加密方法

这里我们在test.py中写入MD5、Base64、RSA这几种加密的方法,如下:

# MD5加密def md5(self,args=None):if args is None:md5_str=''return md5_str # 返回为小写,需要转大写后面添加.upperelse:utf8_str = str(args).encode("utf-8")# md5加密(哈希算法)md5_str = hashlib.md5(utf8_str).hexdigest()return md5_str # 返回为小写,需要转大写后面添加.upper# BASE64加密def bs64(self, args):# 以指定的编码格式编码字符串utf8_str = str(args).encode("utf-8")# base64加密base64_str=base64.b64encode(utf8_str).decode("utf-8") #base64.b64encode(utf8_str)是字节格式,使用decode(# "utf-8")将其转换成字符串return base64_str # 返回为小写,需要转大写后面添加.upper#RSA双密钥加密方式#生成公钥的私钥写入到指定的pem文件:def create_key(self):#根据密钥长度生成公钥和私钥(public_key,private_key)=rsa.newkeys(1024)# print(public_key,private_key)#保存公钥with open("D:\\测试项目\\接口测试自动化2\\public.pem","w+") as f:f.write(public_key.save_pkcs1().decode())# 保存私钥with open("D:\\测试项目\\接口测试自动化2\\private.pem","w+") as f:f.write(private_key.save_pkcs1().decode())#通过公钥加密def public_key_jiami(self,args):# 导入密钥with open("public.pem") as f:pubkey= rsa.PublicKey.load_pkcs1(f.read().encode())#加密byte_str=rsa.encrypt(str(args).encode("utf-8"),pubkey)print(byte_str)#把二进制转换成字符串格式miwen =base64.b64encode(byte_str).decode('utf-8')return miwen#通过私钥解密def private_key_jiemi(self,args):# 导入私钥with open("private.pem") as f:prikey = rsa.PrivateKey.load_pkcs1(f.read().encode())#解密byte_str=base64.b64decode(args)mingwen=rsa.decrypt(byte_str,prikey).decode()return mingwen

二、测试用例yaml文件中调用加密方法

在测试用例的get_token.yaml中我们改写password的值,如下:

对于密码为空的情况,也是需要特殊处理,因为当你密码是空的时候,调用方法时会报错,所以这里我以MD5的加密为例进行了处理,

if args is None:md5_str=''return md5_str

好了,一个简单的python+pytest+yaml+ddt+allure的个框架就学习到这了,后面还有框架优化或者升级,等我研究出来再和大家分享

三、源码

这么多天的学习就暂且到这里了,如果你也想要学习和了解接口测试,想要一个写好了的自动化测试框架,可以看这里:

/download/weixin_42833736/86225410

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。