场景:多人在服务器上传代码,大家用不同模块实现,会经常出现拉下来之后的文件缺少依赖(没有安装,缺少依赖会导致无法引用对应模块),我们可以对这个过程自动化,将文件拉下来之后进行判断如果缺少依赖,那么就去安装
线程
如果线程调用的方法有传参,那么需要在调用的方法后边加上args代表参数,传数组
如果调用的方法有返回值,那么可以定义一个list放这个值,有返回值是不能用的
线程例子:用多线程下载文件,这里注意down_load_pic(urls)里边的for url in urls是为了模仿线程池的1个线程对应多个任务的情况,如果不加就是1个线程对应1个任务
锁(死锁),如果不同线程对同一份数据进行操作就可能会出现死锁,比如下图,多个线程操作count,正常结果应该是2000000,但是结果不是,因为互相抢资源
如果想避免上述情况就需要加锁
守护线程:主线程结束后,其他子线程也直接结束
队列:理解的不好,需要重新看一眼
1异步处理
2.顺序处理
那么如果遇到多台机器跑很多用例的时候我们怎么保证可以共用一个orders_q这一个对象呢(或者想跨语言用一个参数操作),我们可以用中间件,比如开源队列rabbitmq,开源队列activemq,redis之类的
注意:python的多线程是利用不了多核cpu的
全局解释器锁:GIL,具体需要百度
cpu密集型任务:特别多的时候用进程处理会好一些
消耗cpu比较多
排序、运算。。
io密集型任务:特别多的时候用线程处理会好一些
input/output
写文件、读文件
上传、下载
线程池,下边的栗子只是记录,具体需要参考大佬的帖子https://www.cnblogs.com/zhang293/p/7954353.html,目前这块还不是很明白
进程,操作起来跟线程差不多
unittest
unittest是单元测试框架,同类型的还是pytest等,一般就是用来测试代码是否正确。
然而此时运行后,下方的执行用例数是0,注意这里需要用pycharm的RUN里边的RUN...然后选择要运行的python文件(相当于只是运行这个python文件),不然之后加上测试报告相关内容后产生不了测试报告
这里注意不要用右键选择Run unittests in xxx.py,这个是pycharm识别出来的,只会运行所有用例
此时我们没有成功运行一条用例的原因是因为如果要将对应函数(方法)名当作测试用例,需要以test 开头
单个运行某个测试用例
然后我们可以导入HTMLTestRunner.py文件或HTMLTestRunner_PY3.py,用于创建网页测试报告
import HTMLTestRunner
如果想运行某个类的用例:
结果
这里我们分不清每个方法是测什么功能的,可以写上备注:
测试某个目录下的所有测试用例,这里我们新建了一个cases目录,并在下边新建了3个test_XXX的文件,里边写着测试代码(代码跟之前的差不多)
参数化
对于这里边的参数化二维数组,可以联想到之前的读取excel,然后转化成二维数组直接放进去
pip install parameterized
import parameterized
新建python文件模版
在File下的setting(ios应该叫preference)