【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  # 返回为小写,需要转大写后面添加.upper
        else:
            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的个框架就学习到这了,后面还有框架优化或者升级,等我研究出来再和大家分享

三、源码

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

https://download.csdn.net/download/weixin_42833736/86225410

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小丫么小二郎~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值