day8 多线程( 线程池 守护线程 锁) unittest

多线程threading(执行python文件,默认开始一个主线程)

Python多线程相当于单核多线程,多线程有两个好处:CPU并行,IO(输入输出)并行,任何Python线程执行前,必须先获得GIL锁,然后,每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行。这个GIL全局锁实际上把所有线程的执行代码都给上了锁,所以,多线程在Python中只能交替执行(cpu的上下文切换),即使100个线程跑在100核CPU上,也只能用到1个核。线程之间是相互独立的.cpu有 几个核心就只能同时运行几个任务.   

 

多线程:使用于IO密集型任务          多进程:适用于CPU密集型任务   

 

在windows中启动多个进程要加上 if  --name--==--main--

 

input/output  网盘io(网上下载上传东西)  磁盘io(数据库里写数据写文件都是在操作磁盘)CPU用来调度,消耗不大,cpu都是在等待,大部分都是磁盘在操作

 

数据 分析,排序,计算   使用cpu比较多,用多进程比较合适

 

可以用来做异步任务,比如发邮件时间久,开启一个线程去发邮件,如果发邮件时间久的化,主线程就可以优先结束任务,子线程还在运行.

 1.怎么去启动一个或多个线程   2.主线程去等待子线程

 

 

 2.下载图片

开启多个线程要想去拿到结果,用return 是拿不到的,把线程的结果加到 列表中[用列表把结果接收了],最后从列表中拿值就可以

 

 

 

 

 

 线程池(电脑不能无限制的开线程,利用线程池来限制开启的线程数,运行线程)

第一步开启一个线程池,第二部 分配数据(就是运行的函数和数据加入),第三步 把数据一个一个加入到线程池

 ---------------------------------

三、守护线程

主线程结束,守护立马死掉。    设置成守护主线程后,主线程结束,守护也结束(不管子线程有没有运行完都结束)    俗称陪葬

 

 ----------------------------------------------

四、锁.多个线程操作同一个数据的时候就得加锁(python3在安全期间自动加锁了).  多个线程还是并行,只不过运行到加锁的数据就会轮流进行

 ---------------------------------------------------------------

五、多进程

multiprocessing 模块  用法和线程差不多

在windows中启动多个进程要加上 if  --name--==--main--

 --------------------------------------------------------

 六、虚拟环境  (可以直接建立,python的虚拟的运行环境,不需要 的时候可以直接将文件夹删除)推荐使用虚拟环境

1.pip install virtualenv 安装模块              2.建一个文件夹用来存放 虚拟环境       windows  cd / 进入c   dir查看当前目录  cd  进入

3.执行命令(可以在pycharm中执行,也可以在cmd中) virtualenv pys  这样就建立一套环境,这个环境是一套干净的环境,没有第三方模块,里面只有pip

virtualenv --name  (看这个命令下配置) 如果配置虚拟环境的时候想有自己环境的包,virtualenv name --system-site-packages

4.进入虚拟环境,进入到建好的环境目录,linux中bin进入bin,windows无bin 进入scripts .执行activate      如果是 linux中执行 source  ./activate

退出的话是 deactivate

-----------------------------------------------------------------------------------------------------------------

搭建测试环境

1.申请服务器  2.安装依赖的的软件   jdk1.8  mysql  redis  tomcat    3.获取代码  ,修改 配置文件(编译,打包)

4.导入基础数据(建表,导入数据) 5.代码放到服务器上,启动

日常部署:开发修改完代码后。 1.拉取最新的代码 ,修改配置文件(编译打包)   2.如果有变动sql,执行 3.服务器上代码替换成最新的,重启

-------------------------------------------------------

七、单元测试   自己测自己的代码

自己写一些测试的代码,来测试自己写的代码功能有没有实现 

单元测试框架  #python  unittest  #java  junit   #php  phpunit

unitest  运行测试用例        是测试用例的函数要加test        最后的类不需要实例化,直接 用 unittest.main()

 

 ------------------------------------

  测试报告

在python中可以把python的文件,放入环境lib中,然后import 模块   应用,也可以在pycharm中,把文件放入到  Libraries 中

HTMLTestRunner 和BeautifulReport (是个文件夹,把第二层文件夹放到python环境里) 都不在pip源上,所以需要下载

#testcase  用例    #testsuit 用例集合     #testrunner 运行测试用例     #testloader 查找测试用例

HTMLTestRunner产生测试报告

#产生测试报告的 写法,首先写好测试用例。导入模块    HTMLTestRunner,不能写 unittest.main()

file = open('report.html','wb') #首先打开一个文件夹,文件是html格式的,用来存测试报告

runner = HTMLTestRunner.HTMLTestRunner(file,title='测试报告')     

test_suit = unittest.makeSuite(AddTest) #把测试用例加入到用例集合中

runner.run(test_suit)            #运行测集合

file.close()

 BeautifulReport 产生测试报告,比HTMLTestRunner好看些,比之前的也好些    site-packages,报错的话把路径放这个下面

import BeautifulReport as brl  #太长起个别名

test_suit = unittest.makeSuite(AddTest)    #生成测试集合

report = brl.BeautifulReport(test_suit)       #运行集合

report.report(filename='bf_report.html',description='bf测试报告',log_path=r'C:\Users\16090\Desktop')  #生成文件,标题,可以指定路径

 

print(report.failure_count) #失败案例的条数
print(report.success_count) #成功的案例数

 

 当前文件的目录   os.path.abspath(__file__)      当前文件的上级目录 os.path.dirname( os.path.abspath(__file__))

--------------------------------------------

参数化导入模块  parameterized

import parameterized #输入数据驱动  自动化有三种驱动   1.数据驱动   2.代码驱动     3.关键字驱动
@parameterized.parameterized.expand(data)   #parameterized  执行参数化,参数放到列表中

 

 -----------------------

测试用例在一个文件夹中,运行测试用例

test_suite = unittest.defaultTestLoader.discover('case','*.py')
#用defaultTestLoader查找当前的文件下,的测试案例,作为测试集。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 用例不在一个文件夹中,怎么把用例到导入到用例集中执行。直接传文件夹就可以,但是文件夹里的 文件夹 需为 python package .这个文件夹中有个__init__.py  的文件。(自己可以在里面写入 from . import 当前文件的模块)

--------------------------------------------

拼接url的地址   可以  用 form  urllib import parse        parse.urljoin(url1,url2)             

url 解码,url 编码。

 

 ----------------------------------

posted @ 2019-11-18 22:52  戒七  阅读(390)  评论(0编辑  收藏  举报