测试老鸟整理,Postman接口测试MD5+RSA加密自动登录(超全总结)


前言

使用场景

大多数项目都有登陆权限认证,需要先登录获取token再用这个token作为请求头请求接口。

每次测试接口都需要先调登录接口,再给每个请求设置请求头。有点麻烦,根据这个配置完成之后每次只需要先调一下登录接口,其它接口就直接请求就行了,不需要再管请求头。

实现步骤

1、登录接口

登录接口采用MD5+RSA加密

先将系统用户名及密码配置在postman环境变量中

在这里插入图片描述

调用接口获取公钥,并在该接口tests里面设置将本次公钥放进postman环境变量中

pm.test("Status code is 200", function () { 
	pm.response.to.have.status(200);
	}); 

var data = JSON.parse(responseBody); 
pm.environment.set("publickKey", data);

调用登录接口,调用之前先用MD5+RSA将用户名、密码用刚才获取到的公钥进行加密

MD5加密是postman内置的js,引入内部包只需要require(模块名)就ok了

var cryptos = require('crypto-js'); 

RSA加密需要引用外部js,引用外部js的原理就是先获取这个js整个文本内容,然后eval(js文本)就可以在后续代码里直接调用这个js里面的方法了

这里采用的先获取到js然后复制到postman的global变量里

在这里插入图片描述

然后在登录接口的pre-request-script里面直接调用

var cryptos = require('crypto-js'); //引入postman内置包
var username = pm.environment.get("username")//环境变量中配置的用户名
username = cryptos.MD5(username);
var password = pm.environment.get("password")//环境变量中配置的密码
password = cryptos.MD5(password);
//获取公钥
var encrypt_key = pm.environment.get("publicKey");//第一个步骤中保存到环境中的公钥
eval(pm.globals.get("forgeJs")); //将forgeJS的内容当js代码执行
var encUsername = encryptRsa(encrypt_key, username);//用户名RSA加密
var encPwd = encryptRsa(encrypt_key, password);//密码RSA加密

pm.variables.set("username", JSON.stringify(encUsername));//设置成本次请求的参数
pm.variables.set("password", JSON.stringify(encPwd));
pm.variables.set("publicKey", JSON.stringify(encrypt_key));

function encryptRsa(encrypt_key, clearText){
    //注意此处上下的BEGIN PRIVATE KEY不要删除,框架自带的
    const public_key = '-----BEGIN PUBLIC KEY-----\n'
            + encrypt_key
            + '\n-----END PUBLIC KEY-----';
    var publicKey = forge.pki.publicKeyFromPem(public_key);
    var buffer = forge.util.createBuffer(clearText, 'utf8');
    var bytes = buffer.getBytes();
    var encryptedText = forge.util.encode64( publicKey.encrypt(bytes, 'RSAES-PKCS1-V1_5', {
            md: forge.md.sha256.create(),
            mgf1: {
                md: forge.md.sha1.create()
            }
        })
    );
    console.log('encryptedText: '+ encryptedText);
    return encryptedText;
};

接口参数示例

在这里插入图片描述

tests是在获取到响应之后执行的,登录完成之后将获取到的token放进postman环境变量中

在这里插入图片描述

pm.test("Status code is 200", function () {
	pm.response.to.have.status(200);
	}); 

var data = JSON.parse(responseBody); 
pm.environment.set("token", data);

2、整个collection添加pre-request-script

在这里插入图片描述

pm.request.headers.add({ key: "token", value: pm.environment.get("token") });
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有当你真正热爱一件事情时,你才会有足够的动力去追求它。找寻自己的热情所在,勇敢地追寻梦想,让自己成为一个充满活力、有理想、有抱负的人。

真正的成功不只是达到某个目标,更重要的是在追求的过程中不断学习和成长。积极乐观,勇往直前,让每一天都充满挑战和乐趣,你会发现成功就在不远处。

每一个小小的进步都是通向成功的重要步骤。保持耐心和毅力,在每一个瞬间都发挥到最好,你会发现那些看似遥远的梦想其实离自己并不遥远。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值