当前位置: 首页>编程语言>正文

pytest使用allure pytest命令

pytest常用命令

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

setup与teardown

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

pytest使用allure pytest命令,pytest使用allure pytest命令_字符串,第1张

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

pytest使用allure pytest命令,pytest使用allure pytest命令_用例_02,第2张

一些常用命令

在之前为了使用,就简单用了一下 ‘-s’命令,使用来打印出来信息的,但其实pytest还有很多很好用的命令。

当我写好了整个测试用例的时候,我可能为了调试,并不想将所有的case都执行,那么如果脱离pytest的话,我会选择备注,暂时注释掉其他内容,只留一小部分进行调试,pycharm提供了快捷键 ‘ctrl + /’来进行注释的操作。

但是还是不够简便,不够快捷,这时候就用到了pytest里的**‘-m’命令,这个命令是用来打标签的,我们可以预先给想用的用例打好标签,然后用其进行运行,打标签的时候用到的就是python的修饰符@**,大体如下图所示

pytest使用allure pytest命令,pytest使用allure pytest命令_字符串_03,第3张

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

pytest使用allure pytest命令,pytest使用allure pytest命令_字符串_04,第4张

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

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

pytest使用allure pytest命令,pytest使用allure pytest命令_pytest使用allure_05,第5张

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

pytest使用allure pytest命令,pytest使用allure pytest命令_字符串_06,第6张

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

pytest使用allure pytest命令,pytest使用allure pytest命令_用例_07,第7张

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

pytest使用allure pytest命令,pytest使用allure pytest命令_字符串_08,第8张

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

pytest使用allure pytest命令,pytest使用allure pytest命令_python_09,第9张

–collect-only 这个命令会只收集用例,并不会真正去执行用例,这个命令可以让我们清除目前会执行的用例有哪些。

@pytest.mark.parametrize()这是是参数化的方法,从最靠近该方法的一条向外扩展,可以快速实现相同用例的不同参数的排列组合,可以加ids,用于修改名称

可能还有一些比较好用的我没总结到,不过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的值还原了,但列表却不停填充了,这让我有所疑惑,待排查

pytest使用allure pytest命令,pytest使用allure pytest命令_字符串_10,第10张

pytest使用allure pytest命令,pytest使用allure pytest命令_字符串_11,第11张



https://www.xamrdz.com/lan/5jc1937281.html

相关文章: