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