python之sys实战、hashlib实战、异常
一、sys实战
sys提供对解释器使?或维护的?些变量以及与解释器强烈交互的函数的访问import sys print('查看解释器的版本:',sys.version) print('查看操作系统:',sys.platform) #查看解释器的路径 for item in sys.path: print(item)在实际的企业案例过程中,经常会遇到我们被调?的模块是找不到的,这个时候我们可以使?sys把它添加到搜索 的路径中,案例演示的代码如下:
import sys
import os
#获取当前路径
base_dir=os.path.dirname(os.path.dirname(__file__))
print(base_dir)
day12path=os.path.join(base_dir,'day12')
print(day12path)
#添加到sys.path里面
sys.path.append(day12path)
for item in sys.path:
print(item)
from asdaer import *
func()
二、hashlib实战
open API 的加密思路:
1、对请求参根据key进行排序
2、把请求参数处理成key=valuekey=value
3、对请求参数进行mds的加密(加密的数据类型必须是bytes(编码)的类型)
4.把加密后的sign当作请求头给服务端发送过去,服务层进行比较,如果一致,可以请求,如果不一致,拒绝请求
import hashlib
import time as t
from urllib import parse # urllib包 parse模块
def sign():
# 对请求参数进行排序,根据key来排序
dict1={"name":"caiying","age":18,"address":"xian","time":t.time()}
data=dict(sorted(dict1.items(),key=lambda a:a[0]))
#把请求参数处理成key=value&key=value
data=parse.urlencode(data)
#获取到m5的对象
m=hashlib.md5()
#把str转为bytes的数据类型的过程,以及进行具体的加密
m.update(data.encode('utf-8'))
return m.hexdigest()
print(sign())
三、异常
程序在执行的过程中,都会存在异常的情况,和设计测试用例的思想一样,需要考虑被测功能点的正常功能点和异常功能点
针对异常我们
try:
expect
else:
finally
执行顺序:
1、如果try执行正常,代码就执行到else的逻辑,再执行finally
2、如果try执行异常,代码就执行到expect的逻辑,再执行finally
?如写?个除法的函数或者?法,分?是0,那么这样的程序肯定是要处理异常的,我们来看看如果不异常处理,代码如下:
def func(a,b):
print(a/b)
if __name__ == '__main__':
func(1, 0)
如上的代码执?后,就会出现如下的错误信息:
Traceback (most recent call last):
File "/Applications/code/testdev/异常处理/异常.py", line 21, in
func(1, 0)
File "/Applications/code/testdev/异常处理/异常.py", line 19, in func
print(a/b)
ZeroDivisionError: division by zero
进行异常处理之后:
def func(a,b):
try:
return a/b
except ZeroDivisionError:
print('分母不能为0')
except Exception as e: #第一个except执行第二个就不再执行
print('程序执行错误,请检查程序')
print(func(1,0))
def func(a,b):
try:
print(a/b)
except Exception as e:
print(e.args)
else:
print('try执行正常,代码就执行到else的逻辑')
finally:
print('不管程序是否正常,我都会被执行到')
func(4,2)
def func(a,b):
try:
print(a/b)
except Exception as e:
print(e.args)
else:
print('try执行正常,代码就执行到else的逻辑')
finally:
print('不管程序是否正常,我都会被执行到')
func(1,0)
正常的执行的顺序:try--else--finally
异常的执行的顺序:except--finally
四、登录实战异常处理
def register():
'''注册账户'''
username = input('请输入账户:\n')
password = input('请输入密码:\n')
asd=username+' '+password
with open('user.txt','w') as f:
f.write(asd)
def login():
'''登录'''
username = input('请输入账户:\n')
password = input('请输入密码:\n')
with open('user.txt', 'r') as f:
lists =f.read().split(' ')
if username==lists[0] and password==lists[1]:
print('login success')
else:
print('login failed')
if __name__ == '__main__':#主函数:程序执行的入口
while True:
try:
f=int(input('1、注册 2、登录 3、其他\n'))
except:
continue
else:
if f==1:
register()
elif f==2:
login()
elif f==3:
break