一.知识回顾,
1.构造函数:def __del__(self)是类执行完后,需要将某些如连接等关闭,可将关闭代码写在该函数中,既是实例被销毁的时候执行
2.私有寒素:def __say(self)表示只能在类中调用,私有变量:self.__aa= "私有变量值",只能在类中使用的变量
3.装饰器:在函数上一行加上@xxxx,结构如@classmethod,作用是不改变原来函数,而改变函数的功能
4.静态方法:在函数上一行加上@staticmethod,是一个普通的函数,定义在类中,不能被其他方法调用
5.属性方法:在函数上一行加上@property,看起来像变量的函数,没有入参,调用的时候也不需要加括号如m.red_pag
6.多线程:在python代码中都是单线程运行的,如果需要多线程运行需要另外用代码实现,导入threading模块,定义一个方法,使用循环启动多个线程,
threads = []定义一个空的字符串,用来接收启动的线程
for i in range(5):循环启动五个线程
t = threading.Thread(target=run,args=(str(i),))其中run代表要运行的函数,str(i),代表传入的参数,注意此处如果只有一个参数时,需要在参数的后面加上".",因为传入的是一个元组
threads.append(t)将启动的线程加入事先定义好的字符串threads中
t.start()启动,此时所有的线程还是以串行的方式运行,要做到同时运行需要加上一下两步代码
for t in threads:循环存储线程的字符串 第一步
t.join()每个线程到这里都等待,固定用法
while threading.active_count() !=1:pass 第二步,此行表示只要运行的线程数不等于1,就往下运行,既是当所有要启动的线程全部启动后才释放,相当于集合点
7.多进程:一个进程中至少包含一个线程,计算机在运行时实际上没有真正的大并发,同时运行的进程取决与计算机CPU的实际核心数,有多少核就能同时运行多少个线程,使用多进程需要导入
from multiprocessing import Process,Pool
def down_img(qq_num):定义一个下载QQ的函数
pool = Pool(5)指定启动5个进程
list(pool.map(down_img,all_qq))固定用法,调用函数down_img,传入参数QQ号码,
8.线程池:当系统负载过大或者配置较低时,可一指定运行多少线程池,确保运行过程中不会出现排队,需要导入threadpool模块
all_request = threadpool.makeRequests(down_img,all_qq)指定运行函数down_img,和传入参数all_qq
for p in all_request:
pool.putRequest(p)发送请求,
pool.wait()等待所有线程运行完
9.继承:是子类继承父类的属性,方法,调用父类方法用 Base.__init__(self,ip,port).ip和port是父类的属性
二.装饰器:装饰器就是不改变原来函数的结构代码调用方式的情况下,给函数增加新功能.相当于给函数外层套一个函数
1.下图表示返回一个函数,该返回函数中包括该函数本身的执行内容,也包括外层函数传入的函数.最后调用的时候用hhh来接收返回的函数,hhh就等于add(),这样就可以使用hhh()来调用函数,执行add()本身需要执行的代码块,还包括传如的函数
2.下面截图是一个完整装饰器
三.实现一个自动化脚本读取excel表中的数据,发送请求,判断结果,统计数据,发送邮件,
1.首先新建一个项目目录,这里叫spz,在spz下新建
①bin目录,用存放启动文件statr.py,
②config目录用存放配置文件setting.py,
③lib目录用于存放工具类文件tools.py和my_request.py文件.
④cases目录用于存放用例文件,一般是excel表.
⑤logs目录,用户存放日志文件,该文件一般是以(.log)格式结尾的文件
1.首先在config中新建setting.py文件中配置常量
2.在lib中新建my_request.py文件中请求接口,判断返回值类型,
3.在lib中新建tools.py文件中请求接口,判断返回值类型,
4.在cases中存放已经做好的用例excel表,可以存放多个表
5.在bin中新建start.py文件,内容如下,存放启动main函数
6.logs中apt.log,每次运行main函数,都会将日志写入该文件
四.pyyaml:安装的时候包名是pyyaml,导入的时候用yaml (import yaml),就可以创建以.ymal结尾的文件,该类文件可以用来写用例,直接一k-v形式写入数据,用python文件读取,可直接转换为字典
如果有多组数据,在文件中每组数据上一行顶格加一个减号(-),数据缩进,这样输出就是多组字典组成的一个数组list