pytest测试框架pytest-random-order插件随机执行用例顺序

      Pytest提供了丰富的插件来扩展其功能,本章介绍下pytest-random-order插件,随机设置pytest测试用例的运行顺序,并对随机性进行一些控制。

官方文档:
https://pytest-cov.readthedocs.io/en/latest/index.html

适配版本说明:

python >= 3.5

pytest-random-order安装

使用pip命令安装: pip install pytest-random-order (安装在pytest工程所运行的python环境,python的安装目录或者虚拟环境目录,可以参考之前文章查看运行环境pycharm配置pytest运行环境)

通过pycharm安装:打开设置,按照如下图中安装插件(windows系统)

pytest-random-order运行

使用时无需导入,直接在pytest运行命令中添加参数即可。主要有以下参数:

  • --random-order:随机化整个测试会话中所有测试用例的执行顺序。默认包括所有的测试函数、方法和类。
  • --random-order-bucket:设置重新排序的范围,可以是class、module、package、global,parent, grandparent。前面四个比较好理解,剩下两个parent和grandparent指的是用例的父节点和祖父节点(比如class内的用例父节点是class本身,模块内的函数动用例父节点是模块本身)。
  • --random-order-seed:指定一个随机数,以确保每次使用该数字时获取相同的随机顺序。

以下是源码中的三个参数的介绍信息:

执行带上参数--random-order

设计几条用例如下图:预期是所有用例执行顺序会被打乱。

第1次执行结果:

第2次执行结果:

实际结果显示每次执行顺序都不太相同,跟预期相符。

执行带上参数--random-order-bucket

设置两个python文件,里面的用例同上。

1)带上参数--random-order-bucket=module,执行时预期结果是每个文件内的用例执行顺序随机,文件执行顺序不变。

2)带上参数--random-order-bucket=class,执行时预期结果是不同类中的用例随机。

3)带上参数--random-order-bucket=package,执行时预期是整个目录内的用例是随机的

4)带上参数--random-order-bucket=parent,执行时预期是按用例父节点来随机执行用例顺序。

举例:我们在源码中增加下打印条件,打印下父节点和祖父节点。

以参数--random-order-bucket=parent举例,执行后结果如下:

class内的用例父节点是class本身,文件的函数用例父节点是文件本身,那么依次类推文件的父节点是上层文件夹。

执行带上参数--random-order-seed

同样使用上面定义的测试用例

1)参数--random-order-seed=1000时,结果如下;

2)参数--random-order-seed=2000时,结果如下;

3)当我们再次使用--random-order-seed=1000时,重新执行结果如下:

结果显示跟第1次执行时随机顺序一致。

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

---祝愿大家都能够龙腾虎跃,步步高升!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

科雷learning

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

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

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

打赏作者

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

抵扣说明:

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

余额充值