自动化测试第八节---base64、zip方法、异常处理、接口签名、网络编程

1、base64加密

import base64
s='1234'
new_s = base64.b64encode(s.encode())#加密
print('加密完的',new_s)
old_s = base64.b64decode(new_s.decode()).decode() #解密回来的
print('解密回来的',old_s)

def bs64_data_encode(st):
'''这个函数是用来base64加密的'''
salt='12345'
new_str = str(st)+salt
encode_str = base64.b64encode(new_str.encode()).decode()
return encode_str

def bs64_data_decode(st):
'''这个函数是用来base64解密的'''
salt='12345'
res = base64.b64decode(st).decode()
res=res.replace(salt,'')
return res
2、zip方法
a1=['姓名','年龄','电话']
a2=['nyy',28,110]
for k,v in zip(a1,a2):#zip函数接受任意可迭代的对象作为参数
print('%s:%s'%(k,v))
'''打印出:
姓名:nyy
年龄:28
电话:110'''
print(zip(a1,a2))#只是用zip方法打印的是内存地址
print(list(zip(a1,a2)))#对象中对应的元素打包成一个个tuple,打印tuples组成的list,如[('姓名', 'nyy'), ('年龄', 28), ('电话', 110)]
3、异常处理
try:
price = input('请输入价格:')
if price.isdigit():
pass
else:
raise ValueError#主动抛出异常
except Exception as e: #如果上面的代码出错了,才走except #python3 里面处理异常这么写
print(e)
else:#如果上面的代码未出错,走else
print('11')
finally:#不管try的代码是否出错,都走finally
print('x')

4、接口签名
说白了就是登录之后给你的通行证
接口签名规则,如:
md5(username+当前登录的时间戳+salt)
sign_str = username + str(int(time.time())) + SALT
sign=md5_passwd(sign_str)#md5后的签名
1、有一些参数就从cookie里面获取到了。因为浏览器会自动把cookie里面的东西发给服务端
   获取cookie的话,就是request.cookies.get('k')
2、如果你想setcookie的话,那你就用
   res = make_response('{"msg":"xxxx"}')
   res.set_cookie(k,v)#setcookie
   但是呢,一般这样的关键信息不要写到cookie里面因为会导致cookie盗用

5、网络编程
url编码、url解码:
from urllib.parse import quote,unquote
a=' 奥迪% jdskfiewklew'
print(a)
print(quote(a))#url编码
print(unquote(quote(a)))#url解码

urllib模块:
from urllib.request import urlopen #从urllib里面导入urlopen,它是用来打开一个连接的
from urllib.parse import urlencode #是把字典转成k=v这种形式的
url="http://127.0.0.1:8001/login"
data = {"username":"nina","password":123456}
param = urlencode(data)
# res = urlopen(url+'?'+param).read().decode() #发get请求
res = urlopen(url,param.encode()).read().decode() #发post请求
print(res)

requests模块:
import requests
url = "http://127.0.0.1:8001/login"
data={"username":"nina","password":"123456"}
req = requests.get(url,data)
# req = requests.get(url+"?"+"username=nina&pwd='123456'")#这样直接拼接url也可以
print(req.text) #.text时返回一个字符串
print(req.json()) #.json()时返回一个字典,前提时接口必须返回json串

#********#获取签名sign***************************************************************************************
def get_sign(url,data):
res = requests.post(url,data).json()
print(res)
return res['sign']

#********请求报文为json类型的*******************************************************************************
sign = get_sign(url,data)
data2 = {
"username":'jackzhao',
"real_name":"赵赵",
"class":"巨蟹座",
"phone":"18877770001",
"sign":sign
}
r = requests.post('http://127.0.0.1:8001/add_stu',json=data2)
print(r.text)

# ********发带cookie的 header*********************************************************************************
sign = get_sign(url,data)
cookie = {'sign':sign}
header = {'nieyy':'dsdswww'}
data2 = {
"username":'mmaj',
"real_name":"玛丽",
"class":"巨蟹座",
"phone":"19800090002"
}
r = requests.post('http://127.0.0.1:8000/add_stu',json=data2,cookies=cookie,headers=header) #header里面传的时候不能有中文
print(r.text)

#********上传文件************************************************************************************************
file ={'file_name':open('hahah.py',encoding='utf-8')}
url="http://127.0.0.1:8001/upload"
r = requests.post(url,files=file)
print(r.text)

 
 
 
原文地址:https://www.cnblogs.com/ninanie/p/7865880.html