mock接口返回加密值

1.flask:flask是使用python语言编写的web测试框架

如果报错: Could not fetch URL https://pypi.org/simple/flask/: There was a problem confirming the ssl certificate   -----因为pip是国外网站,因此用国内镜源就行。

 pip install flask -i http://pypi.douban.com/simple --trusted-host pypi.douban.com  

2.最基础的代码逻辑:(默认methods=['GET'])          

#初始化一个flask对象
from flask import Flask

app= Flask(__name__)

#创建一个函数,并把这个函数装饰成一个mock server

@app.route('/')  #把创建的函数,放在flask对象的route装饰器里面,用来生成返回值的地址
def test1():
    return "测试1"   #返回值

#运行mock服务
if __name__=="__main__":
    app.run()

示例:

 结果:

在postman中也可以实现

 如果要修改html路径,在route里面修改,如:

3.进阶一:既可以返回get方法,又可以返回post方法,同时返回值是json格式。(#用bejson可将json处理和格式化)

#初始化一个flask对象
from flask import Flask

go = Flask(__name__)

#创建一个函数,并把这个函数装饰成一个mock server

@go.route('/xinzi',methods=['GET','POST'])  #把创建的函数,放在flask对象的route装饰器里面,用来生成返回值的地址
def test2():
    return {
	"sites": [{
			"name": "cainiao",
			"url": "www.runoob.com"
		},
		{
			"name": "google",
			"url": "www.google.com"
		},
		{
			"name": "web",
			"url": "www.weibo.com"
		}
	]}

#运行mock服务
if __name__=="__main__":
    go.run()

结果:用get和post的方法都能返回json值:

4.进阶2:需求:有参数并且这个参数是需要经过加密处理的---比如在电商中,为防止用户信息被抓包泄露,程序员会写加密算法。常见的五种加密:(MD5\SHAX\Base64\RSA\SIGN)

 以MD5加密为例,传入一个值,返回MD5加密后的32位大写的值。 

(1)在代码里加密,看结果是否和数据库中一致:

#初始化一个flask对象
from flask import Flask,request
import hashlib
go = Flask(__name__)

#创建一个函数,并把这个函数装饰成一个mock server

def MD5(value):  #对value做md5加密
    value_change=str(value).encode('utf-8')#先将value转化为字符串,再做编码处理
    value_final= hashlib.md5(value_change).hexdigest()        #用hash算法加密
    return value_final.upper()   #返回32位加密大写

@go.route('/md5',methods=['GET','POST'])  #把创建的函数,放在flask对象的route装饰器里面,用来生成返回值的地址
def md5_login():
    user=request.values.get("username")  #不是requests,requests是做接口自动化的,在flask中导入request表示请求,先取得username和password的值(参数),再和加密后的数据库中的数据做对比。
    pwd=request.values.get("password")
    #查询数据库中的用户名和密码(数据库中一般是已经加密的,在传值时,也得是加密过的)
    db_user="21232F297A57A5A743894A0E4A801FC3"
    db_pwd="0192023A7BBD73250516F069DF18B500"
    if MD5(user)==db_user and MD5(pwd)==db_pwd:    #调用前面写的加密函数
        return "登陆成功"
    else:
        return "登录失败"
#运行mock服务
if __name__=="__main__":
    go.run()

 (2)在postman的前置脚本(pre-request script)中加密:

python脚本代码:

#初始化一个flask对象
from flask import Flask,request
import hashlib
go = Flask(__name__)

#创建一个函数,并把这个函数装饰成一个mock server

def MD5(value):  #对value做md5加密
    value_change=str(value).encode('utf-8')#先将value转化为字符串,再做编码处理
    value_final= hashlib.md5(value_change).hexdigest()        #用hash算法加密
    return value_final.upper()   #返回32位加密大写

@go.route('/md5',methods=['GET','POST'])  #把创建的函数,放在flask对象的route装饰器里面,用来生成返回值的地址
def md5_login():
    user=request.values.get("username")  #不是requests,requests是做接口自动化的,在flask中导入request表示请求,先取得username和password的值(参数),再和加密后的数据库中的数据做对比。
    pwd=request.values.get("password")
    # print(user,pwd)
    #查询数据库中的用户名和密码(数据库中一般是已经加密的,在传值时,也得是加密过的)
    db_user="admin"
    db_pwd="admin123"
    if user==MD5(db_user) and pwd==MD5(db_pwd):    #调用前面写的加密函数
        return "登陆成功"
    else:
        return "登录失败"
#运行mock服务
if __name__=="__main__":
    go.run()

postman前置中的代码:

 

var username=CryptoJS.MD5('admin').toString();
// 先加密,再转化为字符串
var password=CryptoJS.MD5('admin123').toString();
console.log(username);  
// 类似于print
console.log(password)
pm.environment.set("user", username.toUpperCase());
// 将加密字符串大写,并设为变量
pm.environment.set("pwd", password.toUpperCase());

 Base64加密:

python代码端:

#初始化一个flask对象
import base64

from flask import Flask,request
import hashlib
go = Flask(__name__)

#创建一个函数,并把这个函数装饰成一个mock server

def base_64(value):  #对value做base_64加密,用base64加密的方法
    value_change=str(value).encode('utf-8')#先将value转化为字符串,再做编码处理
    value_final= base64.b64encode(value_change).decode(encoding='utf-8')    #先用base64加密,最后结果为二进制的字符串;再用decode转化为utf8格式
    return value_final.upper()   #返回32位加密大写

@go.route('/base_64',methods=['GET','POST'])  #把创建的函数,放在flask对象的route装饰器里面,用来生成返回值的地址
def base64_login():
    user=request.values.get("username")  #不是requests,requests是做接口自动化的,在flask中导入request表示请求,先取得username和password的值(参数),再和加密后的数据库中的数据做对比。
    pwd=request.values.get("password")
    # print(user,pwd)
    #查询数据库中的用户名和密码(数据库中一般是已经加密的,在传值时,也得是加密过的)
    db_user="admin"
    db_pwd="admin123"
    if user==base_64(db_user) and pwd==base_64(db_pwd):    #调用前面写的加密函数
        return "登陆成功"
    else:
        return "登录失败"


#运行mock服务
if __name__=="__main__":
   go.run()

postman前置中的代码:

 

var utf8_username=CryptoJS.enc.Utf8.parse("admin");
var base64_username=CryptoJS.enc.Base64.stringify(utf8_username);
// 先base64加密,再转化为utf8格式
var utf8_password=CryptoJS.enc.Utf8.parse("admin123");
var base64_password=CryptoJS.enc.Base64.stringify(utf8_password);
console.log(base64_username);  
console.log(base64_password);
pm.environment.set("user", base64_username.toUpperCase());
pm.environment.set("pwd", base64_password.toUpperCase());

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...