粉丝1523获赞8654

面呢,我们来看一下,就是我们如何控制测试用力的顺序,刚才我们讲了, 嗯,如何通过命令行来执行,然后呃拍 test, 其实它有很多的用法,就是现在呢,呃,我只是给大家介绍一些工作当中可能用的场景比较多的一些内容,那比如说我们现在有一个 接口啊,或者说 ui 自动化测试,那它是有先后顺序的。呃,比如说这样一个场景吧,就是你需要先去完成灯啊,先去完成 呃用户的注册,然后你需要调用这样的一个接口,然后呢再去调用登录这样的一个接口,也就是说他们这些,嗯,请求呢,或者说你的测试用力和测试用力之间呢,他是有先后顺序的 啊,虽然我们让大家设计测试用力的时候,是不建议大家有顺序的,不建议让每一条测试用力尽量的独立在每一条测试用力执行之前呢,最好把你的数据全都清理一遍 啊,全全都清理干净,然后不要影响当前用力。但是现在的咱们啊,互联网吗,就是很多的产品非常的复杂,很多的场景呢,也需要先后的依赖,所以说呢啊,这种 这种需求是在所难免的,就是你需要让你的测试用力和用力之间可能会有一些依赖关系,会有一个 竖啊,会有一个测试用力和用力之间的前后的这样的一个控制,那我们就可以用这样的一个插件啊,就是 pytest ordering 啊,使用这样一个第三 单方插件就可以很轻松的解决这个问题啊。我们先来看一下这个插件啊,我们也是在 p y p i 的点 y g 上来去查找啊, python 基本上所有的插件就都在这个上面都能找到, 然后有的插件在这里面会有一个说明,如果没有的话,你直接就点 home 配置,去掉它的这个 github 的一个地址,然后它就下面也有一个 read me, 然后看这里面就可以了, 然后这里面包括它的安装基本使用,你看安装的话也是通过一条命令就能安装了,那这个安装呢?我们就不给大家在命令行里去演示了,我们就在拍 charm 里面给大家演示,就是你打开你的拍 charm preference, 然后 windows 的同学呢,应该是在你的 files 里面有 有一个 settings 吧,就啊大家可以自己找一下,就会出现这样的一个界面,然后找到什么呢?找到 project, 然后后面跟项目名字后面这个位置,找到 python 解释器,然后在这里面呢管理你 python 的环境,还有拍这个当前环境下安装的所有的第三方插件,然后我们点击这个加号,然后把我们要安装的插件给他, 给它粘到这个搜索框里,然后它就会在它的搜索库里找到这个插件,然后点击安装就可以了。 那当出现这样一行绿色的标识,然后他说 successful, 那就说明你安装成功了。 然后下面我们来看一下它的具体用法,就是他给我们的一个例子,也很简单就是,嗯,我们这里面有两个测试用力啊, 如果说我们不加他这个在拍子里面,其实他的很多的第三方插件的功能都是通过这个装饰器来实现的,就是在你的方法上面呢加上一个艾特,然后后面跟上啊,一个就是他的功能方法,相当于对你的当前的方法进行了一层包裹, 完成了一些特殊的功能啊,相当于他在这个啊测试用力的基础之上又加了一些功能,也就是他加了一个这个,添加了一个 order, 就是呃,添加了这样的一个装饰器之后呢,他就能够啊更改他的执行顺序了。比如说我们如果不加这个装饰器,我们去执行 这个测试用力,是怎么执行的呢?我们来运行一下,嗯, 就在这里创建一个叫做 test aldering, 我们如果不加这个测试用率,我先给他注视掉吧,对吧?我不加这个装饰器,我直接运行这个文件 a 它运行的顺序可以看到, test f o o test f o test b a r test b a r 也就是 python 的执行方式呢,是从从上到下执行, 从上啊至下去执行,也就是他是足行解析的。注意这个足行解析啊,牌子就是这样的一个,就是他从第一行开始一行一行的解析, 把所有的都解析完了之后,然后去执行,这是 python 的一个啊执行方式,然后那如果我们加了,就是你看它排在上面的先执行,对吧? fo, 先执行 bar 这个后执行,然后我们可以再往下看二一,然后 bar 二, 或者说我们改成一个霸凌吧,也行。 那 f o o b 二 b 二一 b 二二零,跟你的名字,跟你的什么名字阿斯科马什么都没有关系,对吧? 其实 uni test 它是根据你这个名字的阿斯科马顺序来进行运行的,但是 pay test 不是,它是逐行来解析的。然后那我们怎么控制顺序呢?我们就需要加上这样一个,比如说我想让最后这个 b r 零先执行,我们就给他加一个装饰器,让他第一个执行就是给他一个装饰器,就是 at, 在你的方法上面加上一个 at pytes 的,点 mark, 点 rent 啊,你这个 pytes 你要给它导一个包 input pytes 的, 然后括号里面呢?加一个 order 等于一,然后你想让谁第二个之行呢?我想让他第二个之行,然后他呢?呃,第三个之行吧,然后他最后一个之行。 好,我们来运行一下,你看啊,是不是按照我们的顺序? order 最小的按照按照 order 的那个从小到大的顺序执行, 也就是 b r 零线直行, b r 第二个直行,然后第三个是谁呀?是 fo, 对吧?然后 b r 一是最后一个直行啊,就是按照这样的一个顺序,是不是非常简单呀?那他这些插件用起来也是很简单的,对吧? 你无论是命令行执行还是界面运行,它都是支持的,你看我们在命令行里执行一下 high test test order, ordering are we, 对吧?也是按照这个顺序, b r 零 b r 然后 f o b r e 没有问题,对吧?那这个呢?就是控制测试用力的顺序。


现在我们把这个服装跑起来的话,首先肯定是按照正常的效果走,创建事件循环直行面,然后等待用户进来,用户进来之后创建他是个任务,这时候事件循环有两个任务, 一个是面,他注册在 except 这里,正在等待新用户进来。另外一个就是第一个用户的通信循环,所以就会来执行这个通信循环,然后他等待客户端数据,如果客户端有消息来的话,这里肯定就往下执行回消息, 然后继续收消息,如果没有消息来的话,这里就会一直等,因为只有两个任务嘛,妹也在主色,他这里也在主色, ok, 这是一个用户来的效果, 如果是两个用户来的话,这里就会创建两个踏实的任务,加上命的话,事件循环就一共有三个任务,一个县城在三个任务之间来回切,遇到 io 就切换这个任务,遇到 io 的时候我们就去执行另外的任务,全程一个县城在忙,这样既节省了资源,又多接待了客人,效率就比较 高了。好,把服务段跑起来试一下, 再来起 cos 短, 再来一个勾断, 再起一个,没问题吧?我们用 a 三 k o e 补的方式,同样也在单线增加时间的并发, ok, 最后我们再讲一个 u v loop, 这个 u v loop 它是 e、 c、 k o 实践循环的一个高级替代方案。一开始讲 e、 c、 k、 o 的时候,我们就讲了 e、 c、 k o 内部有一个实践循环,它是一个第三方模块提供的实践循环,它可以在一定程度上提高 e、 c、 k o 默认的实践循环的效率,据说可以提高两 两倍以上性能,甚至可以和购物员比肩。如果你以后编程的过程中想要提高性能,你就可以把默认的时间循环替换成这个 uvloop, 当然这是一个第三方的模块,我们来安装一下 pepenstop, 安装好之后,我们来把前面写的这个一步服务段改写一下,只需要做很简单的改动就可以了。音破的 uvloop, 然后我们需要给 asm 开后打一个布丁,把它原来的时间循环换成 uvloop 的时间循环, 一行代码就搞定了。 eason 高点 set evil police, 然后给它传一个 uv loop 点 evil police, 这样就可以了。后面我们调用 eason 高点 room 的时候,它内部的时间循环自动就会用 uv loop 来创建,其他代码都不需要动,我们再来运行一下 也是没有任何问题的,这样替换掉之后,性能就提升了至少一倍。前面我们提过一些 其他的框架,比如 fastapi、 江国三,我们说这些框架很快,效率很高,但其实这些框架效率高不是他们自己高,而是因为他们内部用了 uvloop, 所以他们很快好到此为止。兵法编成的部分我们就全部讲完了, 接下来会有一个实战项目,也是对网络编程以及并发编程的一个总结性的练习,我会在这里用学过的这些知识来写一个在线聊天室,我会一步一步教你怎么买服务器,怎么把我们的代码部署在服务器上,怎么样把进程现成携程都用起来,以此来提高服务端的并发能力。怎么样实现购端自动更新, 以及运行多个服务端,甚至架设多台服务器,怎么样来做负载均衡?这个项目学完之后,我们就可以真正实现跨互联网通信了。我的消息可以通过互联网发给你,你的文件也可以通过互联网发给我。接下来是演示效果, 我这里开了四个客户端,一个在我的 mac 本上,一个在我的 mac 虚拟机上,一个在我的台式电脑上,一个在我的台式虚拟机上。他们的消息、图片、文件都是经过服务器,经过互联网传输过来的。 ok, 话不多说,我们直接开始吧。

小派森,这行大马你一定遇到过,那么他到底有啥用?今天我来告诉你,一定要看完并收藏。大家看到这里有两个模块, a 和 b, a 模块通过第一行,大马导入了 b 模块,然后定义了一个函数 ic, 下面我们运行一下 a 模块,哎,看到打印结果中怎么是两行,这一行 竟然是直行 b 点 fb, 我们发现 b 模块中 fb 函数也执行了,我们运行 a 模块一定不希望执行了 b 模块的模函数,说严重点这就是一个 bug。 那么如何解决这个问题呢?只需要在 b 模块中加上这样的 再执行。我们看到打印结果就只有一行,为啥加了这一行就不执行 fb 函数了呢?结合上一期,所以我们知道执行 a 模块时, 只有他的内幕才是门,其他模块鲁 b 模块的内幕是 b, 所以这行的 f 条件为民众,所以也就不执行 fb 函数了。这个你一定要知道。