• 自动化测试第八节---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)

     
     
     
  • 相关阅读:
    108. Convert Sorted Array to Binary Search Tree
    107. Binary Tree Level Order Traversal II
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    104. Maximum Depth of Binary Tree
    103. Binary Tree Zigzag Level Order Traversal
    102. Binary Tree Level Order Traversal
    系统和进程相关信息
    文件I/0缓冲
    系统编程概念(文件系统mount等函数的使用)
  • 原文地址:https://www.cnblogs.com/ninanie/p/7865880.html
Copyright © 2020-2023  润新知