Python自动化测试(七)

"""
json针对文件
1、序列化:把目标数据通过dumps()方法写到具体文件中
2、反序列化:调用load()方法读取数据
"""

import json

# 针对文件的序列化
dict1={"name":"admin","age":"20"}
json.dump(dict1,open('log.txt','w'))
# dumps()是把python对象转换成json对象的一个过程,生成的是字符串。
# dump()是把python对象转换成json对象生成一个fp的文件流,和文件相关。

# 针对文件的反序列化
data=json.load(open('log.txt','r'))
print(data)
print(type(data))

# 序列化和反序列化
import requests

r=requests.get(url='http://httpbin.org/get')
json.dump(r.json(),open('http.txt','w'))

datas=json.load(open('http.txt'))
print(datas)
print(datas['url'])

import time

# 休眠,秒为单位
time.sleep(5)
print('获取时间戳',time.time())
print('返回当前字符串的日期格式',time.ctime())
print('时间戳处理成字符串格式',time.ctime(time.time()))
print('本地时间方式',time.localtime(time.time()))
print('对时间进行格式化处理',time.strftime('%y-%m-%d %x',time.localtime()))
print('对时间进行格式化处理',time.strftime('%y-%m-%d %H:%S:%M',time.localtime()))

import datetime
import time

print('获取当前时间',datetime.datetime.now())
# 场景:遇到时间戳,怎么把时间戳转为标准时间格式
print('把时间戳格式进行处理',datetime.datetime.fromtimestamp(time.time()))
print('当前时间加5天',datetime.datetime.now()+datetime.timedelta(days=5))

'''
对称加密:发送方接收方都有密钥
不对称加密:单方面加密
对请求参数进行ASCI编码排序
把排序的请求参数处理成栈key=value&key=value
根据第二部分生成结果进行MD5加密
'''

import hashlib
from urllib import parse
import time

def sign():
    dict1={"name":"admin","age":"20","nowTime":time.time()}
    data=sorted(dict1.items(),key=lambda item:item[0])
    data=parse.urlencode(data)
# urlencode()key-value键值对转换成所需格式,返回如a=1&b=2字符串
    m=hashlib.md5()
    m.update(data.encode('utf-8'))
    print(m.hexdigest())
sign()

import sys
import os

base_dir=os.path.dirname(os.path.dirname(__file__))
filePath=os.path.join(base_dir,'admin','a')
sys.path.append(filePath)

# 获取Python的路径
for item in sys.path:
    print(item)

# from admin.a.info import *
from info import *

showInfo()

import json

USER_LOGIN={'isLogin':False}

def outer(func):
    def inner(*args,**kwargs):
        if USER_LOGIN['isLogin']:
            return func()
        else:
            print('请登录')
    return inner

def out():
    username=input('请用户用户名:\n')
    password=input('请输入密码:\n')
    return username,password

def register():
    '''注册'''
    username,password=out()
    temp=username+'|'+password
    # 使用序列化的方式把内容写到文件里面,一个对象的状态(各个属性量)保存起来
    json.dump(temp,open('login.txt','w'))

def login():
    '''登录'''
    username,password=out()
    #反序列化读取文件内容以及把文件按照|进行分割
    lists=str(json.load(open('login.txt'))).split('|')
    if username==lists[0] and password==lists[1]:
        USER_LOGIN['isLogin']=True
        USER_LOGIN['nick']='无涯'
        print(USER_LOGIN)
    else:
        print('请输入正确的账户和密码')

@outer
def profile():
    '''个人主页'''
    print('欢迎{0}访问个人主页的信息!'.format(USER_LOGIN['nick']))

@outer
def admin():
    '''后台系统'''
    print('欢迎访问后台管理系统的信息')

def main():
    '''执行的主函数'''
    while True:
        try:
            f=int(input('1、注册 2、登录 3、个人主页 4、后台系统 5、退出\n'))
            if f==1:
                register()
            elif f==2:
                login()
            elif f==3:
                profile()
            elif f==4:
                admin()
            elif f==5:
                break
        except :continue

if __name__ == '__main__':
    main()

# 1、结合函数的返回值写一个具体的案例
def login(username,password):
    if username=="admin" and password=="123456":
        return "panduan"
def profile(token):
    if token=="panduan":
        print("显示个人主页")
    else:
        print("请登录")
profile(token=login(username="admin",password="123456"))

# 2、函数可以有多个返回值吗?请结合案例编写一个函数返回多个返回值
# 返回一个列表
def fun():
    str = "hello"
    x = 20
    return [str, x]
list = fun()
print(list)

# 3、字典的排序使用到哪个关键字,结合案例来说明
dict1={'a':2,'c':3}
# sorted()对所有对象排序操作
print("对字典根据key进行排序:",dict(sorted(dict1.items(),key=lambda key:key[0])))

# 4、list1=["Go",{"name":"wuya","data":[{"age":18,"language":["Go",{"address":"xian","info":[{"sex":"男"},{"show":[{"work":"测试工程师"}]}]}]}]}]针对如上的信息,获取name,age,work,sex的值,结合字符串的格式化来进行输出
list1=["Go",{"name":"wuya","data":[{"age":18,"language":["Go",{"address":"xian","info":[{"sex":""},{"show":[{"work":"测试工程师"}]}]}]}]}]
# 获取name,age,work,sex的值,字符串格式化
print('name:',list1[1]['name'])
print('age:',list1[1]['data'][0]['age'])
print('work:',list1[1]['data'][0]['language'][1]['info'][1]['show'][0]['work'])
print('sex:',list1[1]['data'][0]['language'][1]['info'][0]['sex'])

# 5、使用文字描述序列化和反序列化的概念
# 序列化:将内存中的对象按照某种既定的规则变成一个个二进制
# 反序列化:二进制还原成对象。

 

 

posted @ 2021-07-19 17:20  星德川  阅读(83)  评论(0)    收藏  举报