pytest-命令行参数

命令行参数

使用 Pytest 执行用例时,我们经常都是通过命令行来执行的,有同学要说了,我一般是通过编辑器里面直接就执行了;在实际项目中编写用例调试用例,使用编辑器执行用例没问题,但在 CI 集成环境下,一般是需要用命令行的。

Pytest 要想玩得溜,命令行参数必须要熟悉,Pytest 支持的参数很多,有自带的参数,插件提供的参数,还有我们自己定义的一些参数,下面就介绍在项目中常用的参数:

1、-s

有时候你发现在用例里面使用 print 语句,但是执行的时候却没有打印,那多半是因为你没有加这个参数。等价于 --capture=no,用途就是捕获 print 输出。如果你不知道 capture 参数也没关系,不重要。

2、-v

详细展示终端输出。比详细更详细使用 -vv ,我们当然是希望输出信息越详细越好。

3、-k

执行用例的时候非常有用,通过关键词来匹配用例,用例的关键词有很多,模块名、文件名、类名、函数名都是关键词,比如:

pytest -k "test_music"

表示执行所有包含 test_music 关键词的用例。

-k 还有一点可能好多同学都不知道,它还支持逻辑表达式,比如:

pytest -k "test_music or test_movie"
pytest -k "not test_music and not test_movie""

逻辑表达是支持 and/or/not 的逻辑组合。

在批量支持用例时,我们通常是不需要执行全量用例的,学会精准的组装用例集对于自动化测试非常重要。

4、-m

我们可以给用例打上标签(mark):

import pytest

class TestMikigo:

    @pytest.mark.smoke
    def test_case_001(self):
        ...

使用装饰器 @pytest.mark 点后面加标签名,就可以给用例打标签,标签名随意指定,甚至可以用中文。

打完标签之后,批量执行用例时就可以通过标签来加载用例,用法和 -k 是一样的。

pytest -m "smoke or core"

5、--co

这个参数全称是 --collect-only,表示只收集用例(统计用例),不执行。

每周我需要给老板汇报目前所有用例多少条,咱总不可能在代码里面一条条去数吧,我通常会使用:

pytest --co

直接就可以看到加载了多少条用例。

另外,有时候批量修改了一些代码,可能引起一些错误,我们可以通过执行 pytest --co 来快速检测一下是否存在错误,因为 Pytest 在加载用例的时候同时也会检测代码中存在的一些问题。这个也非常好用。

6、maxfail

配置最大失败次数,如果一次执行出现了大量的失败,多半这次测试是无效的,通过配置这个参数,我们不用等到所有用例执行完才结束,尽早结束节约时间。

pytest --maxfail=int_number

这里的 int_number 就是最大的失败次数,你可以根据你的经验来指定一个数字。

我的方案是先获取到本次要执行的总用例数 collected_cases_num,然后配置一个总数的比例,如 0.5,表示只要失败次数达到了总数的一半,就可以直接结束测试。

pytest --maxfail=int(collected_cases_num * 0.5)

这样做的好处是,随着项目中用例数量的增加,我不需要去修改这个最大失败的数据,而是通过配置整体的失败比例,这样做更加合理,也更易于维护。

7、reruns

失败重跑次数,在自动化测试过程中经常会有一些不确定性,网络问题、环境问题、量子力学、地球引力等等都有可能造成用例失败,特别是 UI 自动化测试,这些情况经常发生,为了尽量排除环境问题造成的用例失败,采用失败后自动重跑是一个比较好的方案。

pytest --reruns=2

表示失败后重跑2次,如果后面重跑用例成功了,最终的用例状态为 PASSED。

这个参数需要安装三方插件:

sudo pip3 install pytest-rerunfailures

8、timeout

用例超时在 CI 流程中非常重要,因为所有的每日构建都应该是有时长限制的,一跑就是两三天不停就不叫每日构建了,用例执行过程中可能存在一些异常情况,导致用例卡住不动,或者执行速度变慢,我们使用 --timeout 可以给每条用例设置一个最大的时长,如果超时没有执行完,就是强制停止用例。

pytest --timeout=200

表示每条用例的超时时间为 200 秒,注意单位是秒哦。

这个参数需要安装三方插件:

sudo pip3 install pytest-timeout

欢迎关注公众号,与Joker一起探索测试之道。

参考链接 :https://juejin.cn/post/7221769090834481189

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anthony_路人甲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值