pytest常用命令

发布于:2021-10-16 20:16:15

pytest常用命令

pytest真的是一个很方便的库,十分方便我们去进行自动化测试工作,结合我目前的工作场景来看,我没办法去用那些更好用的pytest的扩展工具,因为公司的堡垒机装新库很难,那么我就去看了一下pytest的原生的一些东西,首先就从pytest进行一些梳理吧


setup与teardown

这部分其实是我目前工作就开始用的一部分了,setup的话,就是开始前所做一些准备,常用的肯定就是类的setup和方法的setup,同理,也对应着类的teardown和方法的teardown,teardown就可以想象成收尾工作。这里我目前是写了一个大类,然后一个case是一个自定义函数这样,然后利用setup和teardown进行一些预处理的工作。下面是一个小例子:

这里如果不使用 -s 的话,我们就看不到程序的输出了,只能看到一个结果,然后有错的话也是会标出来的,如下:


一些常用命令

在之前为了使用,就简单用了一下 ‘-s’命令,使用来打印出来信息的,但其实pytest还有很多很好用的命令。
当我写好了整个测试用例的时候,我可能为了调试,并不想将所有的case都执行,那么如果脱离pytest的话,我会选择备注,暂时注释掉其他内容,只留一小部分进行调试,pycharm提供了快捷键 ‘ctrl + /’来进行注释的操作。
但是还是不够简便,不够快捷,这时候就用到了pytest里的**‘-m’命令,这个命令是用来打标签的,我们可以预先给想用的用例打好标签,然后用其进行运行,打标签的时候用到的就是python的修饰符@**,大体如下图所示

可以看到在上面的基础上,我多加了 一行 ,用来打标记,这种 修饰器的使用,是pytest扩展用法的常用手段,基本都是@pytest.xxx
然后我们去使用的时候就可以pytest -m 标签名 文件名这样去使用,如下图所示


当然其他办法也有,pytest提供了-k + 字符串的命令,这个命令主要是用来筛选指定字符串的case,然后匹配的就进行执行,其实如果case写的很有条理的话,可以用这样的命令指定执行某部分代码。


之后我们看一下 pytest -x,这个是在执行错误的时候就会直接退出,不会进行接下来的case,其实可以直接来理解pytest --maxfail=x,这个x是一个数字,可以指定执行到第几个fail就退出。

pytest -v这个命令就是更简化直观了,我比较喜欢这样的一个输出形式,他上面先会是一个汇总,然后下面是错误信息这样。

而之后的这个pytest --tb=native也是我比较喜欢的格式,这种也比较直观,上面是运行汇总情况,下面是指出具体的错误,比较像python原生的一种报错。

pytest -vv --durations=0 这个命令主要用来查看每个用例的执行时间,方面我们更直观的统计数据,以及之后有可能要对执行过久的用例进行一些处理。



如果这里的0改为其他会如何,如果改为2的话,就是输出两个时间最长的,如下


可能还有一些比较好用的我没总结到,不过pytest功能是真的多,尤其是使用装饰器的拓展功能,感觉之前的代码其实还有很多可以优化的地方,尤其是利用上pytest,不过还是优先做出来为第一位吧,之后再学*pytest的拓展功能,例如它的fixture,pytest-xdist,pytest-html。pytest-xdist也是一种并发测试手段,启动多线程共同测试。pytest-html就是一个更好的展示,把结果以网页的形式展现出来。


在使用pytest的时候,发现了一个很有趣的现象,以下这段代码的输出让我十分困惑,之前我理解可能是每个case独立空间,我在setup_class里设置了self.countint型变量和self.list_a一个空列表,然后我执行以下case时,输出如下方图示,每个case里,self.count的值还原了,但列表却不停填充了,这让我有所疑惑,待排查



相关推荐

最新更新

猜你喜欢