一.知识回顾,

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

day10_friest_自动化的更多相关文章

  1. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  2. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  3. python自动化测试(2)-自动化基本技术原理

    python自动化测试(2) 自动化基本技术原理 1   概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领 ...

  4. Appium移动自动化框架

    引言:Appium 是一个移动端自动化测试开源工具,可以针对不同的平台用一套API来编写测试用例.本文对Appium自动化测试框架的功能进行了概括. 本文选自<软件自动化测试开发>. Ap ...

  5. 前端自动化构建工具gulp记录

    一.安装 1)安装nodejs 通过nodejs的npm安装gulp,插件也可以通过npm安装.windows系统是个.msi工具,只要一直下一步即可,软件会自动在写入环境变量中,这样就能在cmd命令 ...

  6. CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

    前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...

  7. CYQ.Data V5 分布式自动化缓存设计介绍

    前方: 其实完成这个功能之前,我就在思考:是先把想法写了来,和大伙讨论讨论后再实现,还是实现后再写文论述自己的思维. 忽然脑后传来一个声音说:你发文后会进入发呆阶段. 所以还是静下心,让我轻轻地把代码 ...

  8. 在CentOS上构建.net自动化编译环境

             我们知道在Windows上我们很容易构建于MSBuild的自动化编译环境,那么在CentOS也是可以的,主要是需要Mono. 在这儿我们选择Jenkins+Gitlab+Mono在C ...

  9. 感悟 GNU C 以及将 Vim 打造成 C/C++ 的半自动化 IDE

    C 语言在 Linux 系统中的重要性自然是无与伦比.不可替代,所以我写 Linux 江湖系列不可能不提 C 语言.C 语言是我的启蒙语言,感谢 C 语言带领我进入了程序世界.虽然现在不靠它吃饭,但是 ...

随机推荐

  1. C++回顾day03---<异常>

    一:传统错误处理机制(C中通过函数返回来处理) int CalcRes(int n, int m, char ch, int& res) { ; switch (ch) { case '+': ...

  2. Hadoop记录-metastore jmx配置

    参考:http://www.lixiuliang.cn/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/ 1.修改bin/hive文件 添加jvm启动参数: if [ $ ...

  3. 第十节:数据批注(DataAnnotationModel)和自定义验证(包括Model级别的验证)

    一. 简介 写完上一个章节MVC中的常用特性,迫不及待将该系列补全,该章节主要介绍数据批注(也叫:注解). 一听[数据批注],好高大上的名字,但仔细一看,它们其实是[System.ComponentM ...

  4. Chain TDNN/LSTM的拼帧索引、延时

    TDNN模型示例 TDNN拼帧: 层:(0,3) 层:(-9,0) 层:(0,3) 层:(-6,0) 层:(0,3) 层:(-3,0) 层:(0,3) 层:(-3,0)     输出依赖 帧,各层需要 ...

  5. UDP 单播、广播、多播

    一.UDP广播 广播UDP与单播UDP的区别就是IP地址不同,广播使用广播地址255.255.255.255,将消息发送到在同一广播网络上的每个主机.值得强调的是:本地广播信息是不会被路由器转发.当然 ...

  6. Leetcode#344. Reverse String(反转字符串)

    题目描述 编写一个函数,其作用是将输入的字符串反转过来. 示例 1: 输入: "hello" 输出: "olleh" 示例 2: 输入: "A man ...

  7. XSS闯关游戏准备阶段及XSS构造方法

    请下载好XSS闯关文件后,解压后放在服务器的对应文件夹即可 在该闯关中,会在网页提示一个payload数值 payload,翻译过来是有效载荷 通常在传输数据时,为了使数据传输更可靠,要把原始数据分批 ...

  8. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

    安装了mysql5.7.19后,执行语句中只要含有group by 就会报这个错 [Err] 1055 - Expression #1 of ORDER BY clause is not in GRO ...

  9. zabbix3.2监控mongodb

    模板地址:https://share.zabbix.com/databases/mongodb/mongodb-for-zabbix-3-2 .安装jq依赖 # yum install jq -y . ...

  10. Sleep和wait

    sleep()和wait()的区别及wait方法的一点注意事项   一.查看API sleep是Thread类的方法,导致此线程暂停执行指定时间,给其他线程执行机会,但是依然保持着监控状态,过了指定时 ...