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

1、base64加密

import base64s=‘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 res2、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())) + SALTsign=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,unquotea=‘ 奥迪% 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 requestsurl = "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)
 
 
 
时间: 2024-10-08 22:23:41

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

day8 网络编程 接口开发 异常处理

一 .在day7中已经讲了单个接口的开发,今天讲有关系的接口开发,也就是依赖性,比如你要在博客园写文章就必须先登录,登陆之后才能发表文章,那么登陆和发表文章之间就有个依赖关系,要做的就是这种开发: 1.接口开发首先要导入flask,导入我们用的着的方法 截图:__name__这里有必要解释一下,name前后是两个_不要写错 导入方法: 1.如果不嫌麻烦完全可以一级一级目录点出来, 2.也可以手动添加环境变量 3.就是可以用pycharm自动帮我们添加环境变量,右键选择Mark Directory

1.扩展方法2.接口的隐式实现和显式实现

1.扩展方法:必须写在一个静态类里面,具体见代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 namespace ConsoleApplication1 {     class Program     {         static void Main(string[] args)         {             Student s = new Stud

php使用N层加密eval gzinflate str_rot13 base64 破解方法汇总

php使用N层加密eval gzinflate str_rot13 base64 破解方法汇总 来源:本站转载 作者:佚名 时间:2011-02-14 TAG: 我要投稿 PHP使用eval(gzinflate(str_rot13(base64_decode('BASE64加密后内容'))))核心代码的解密 下非扩展方式的php加密方法: 这里有个在线的,还不错.木马防杀还行,要保护代码可就不行了. 对应的写了一个简单的解密的, 专门针对eval.这个原理很有用途. 特别说明:此解密程序好像一定

Go 方法和接口

方法 Go 没有类.然而,仍然可以在结构体类型上定义方法. 方法接收者 出现在 func 关键字和方法名之间的参数中. package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } func (v *Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } func main() { v := &Vertex{

Java的3种Base64加密方法

Java的3种Base64加密方法 , 分别是 jdk默认实现的加密方式, 使用cc的加密方式和使用bc的加密方式 import java.io.IOException; import org.apache.commons.codec.binary.Base64; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class Main { public static void main(String[] ar

如何使用==操作符,Equals方法,ReferenceEquals方法,IEquatable接口比较2个对象

"世界上不会有两片完全相同的树叶",这句话适用于现实世界.而在软件世界中,这句话变成了"世界上必须有两片完全相同的树叶",否则,很多事情无以为继. 当比较2个对象是否相等时,通常情况下:==操作符用来比较值类型,比较的是值:实例方法Equals比较引用类型,比较的是对象的地址.静态方法Object.ReferenceEquals既可以比较引用类型也可以比较值类型,但比较的是对象的地址. 在实际项目中,当比较2个引用类型对象时,我们的需求变为:通过依次比较2个对象的所

appium自动化测试(4)部分方法&unitest初步使用

捕捉弹窗 https://github.com/appium/appium/issues/968完整有截屏的例子:https://github.com/bitbar/testdroid-samples/blob/master/appium/sample-scripts/python/testdroid_android_hybrid.py有详细解释的例子:http://www.cnblogs.com/fnng/p/3300788.html 1.unittest 2.截屏并保存driver.save

自动化测试常用断言的使用方法(python+selenium)

自动化测试常用断言的使用方法(python) 自动化测试中寻找元素并进行操作,如果在元素好找的情况下,相信大家都可以较熟练地编写用例脚本了,但光进行操作可能还不够,有时候也需要对预期结果进行判断. 这里介绍几个常用断言的使用方法,可以一定程度上帮助大家对预期结果进行判断. 这里介绍以下几个断言方法: assertEqual assertNotEqual assertTrue assertFalse assertIsNone assertIsNotNone (一)assertEqual 和 ass

接口开发、异常处理、网络编程

一.接口开发,有依赖关系的接口开发 1.场景:用户登录后发表文章 用户登录接口代码示例: import flask,time,json from lib import tools server = flask.Flask(__name__) @server.route('/login',methods=['get']) def login(): username = flask.request.values.get('username') pwd = flask.request.values.g