首页 > 其他分享 >pytest---更改自动化测试用例执行顺序

pytest---更改自动化测试用例执行顺序

时间:2023-07-17 17:14:59浏览次数:35  
标签:顺序 pytest --- 测试用例 print 执行 def

前言

在自动化测试中,自动化测试用例设计原则就是执行过程时不能存在依赖顺序,那么如果测试用例需要按照指定顺序执行,这个时候应该怎么做呢?目前单元测试框架中unittest没有办法改变测试用例的执行顺序,但是另一个单元测试框架pytest可以做到,辅助测试人员更改测试用例的执行顺序,今天小编简单的介绍几种,如何通过pytest进行更改自动化测试用例的执行顺序

pytest

pytest的执行顺序想必大家都清楚,是通过ascii码进行收集的,然后通过文件中从上往下的执行顺序进行运行,我们只需要将我们的测试用例在编写时,按照从上往下的顺序进行编写。

# coding:utf-8
import pytest
def test_a():
    print('测试用例01')
def test_b():
    print('测试用例02')
def test_c():
    print('测试用例03')

通过运行后发现,顺序是按照从上往下的顺序依次执行。

pytest-ordering

pytest-ordering属于pytest的一个插件,其目的就是帮助我们控制自动化测试用例的执行顺序,而且使用起来也比较简单。

安装:pip install pytest-ordering

使用方法

使用方法比较简单,我们只需要在编写好的测试用例前加上一个装饰器,然后通过改变装饰器传入的参数进行控制其用例执行的顺序。小编这里拿到上方的用例,我们将从下往上的执行。

# coding:utf-8
import pytest
@pytest.mark.run(order=3)
def test_a():
    print('测试用例01')
    
@pytest.mark.run(order=2)
def test_b():
    print('测试用例02')
    
@pytest.mark.run(order=1)
def test_c():
    print('测试用例03')

通过执行测试用例会很清楚的看到,我们已经将测试用例的执行顺序改变了。

pytest_collection_modifyitems

pytest_collection_modifyitems属于pytest的钩子函数,这个函数可以收集我们的测试用例,收集完成后可以对其进行一些修改和排序功能,下面小编简单的介绍该使用方法

使用方法

首先需要将pytest_collection_modifyitems这个函数放入到conftest.py文件中,然后对其进行二次开发,这里小编通过倒叙的形似修改了收集到的测试用例,从而改变测试用例的执行顺序

# conftest.py
# coding:utf-8
def pytest_collection_modifyitems(session, items):
    print("收集到的测试用例:%s"%items)
    # 修改执行顺序
    items.reverse()
    for i in items:
        print('收集到测试用例名称:%s' %i.name)

编写3个简答的测试用例,通过命令行的方式进行运行,并且会发现也将我们的测试用例顺序改变和收集到了我们的测试用例相关信息。

# coding:utf-8
import pytest
def test_a():
    print('测试用例01')
def test_b():
    print('测试用例02')
def test_c():
    print('测试用例03')

总结

小编通过简单的案例介绍了如何在pytest中改变测试用例的执行顺序,当然上述方法并不是唯一的方法,只是提供一个简单的思路,小编还是希望大家编写测试用例时注意不要互相依赖,这样的话执行顺序就可以随机执行,保证我们的测试用例不受其他用例的干扰而成功执行。感谢您的阅读,希望本篇文章对您有所帮助。

 

感觉小编写的对您有帮助的可以关注个人微信公众号《跟着安静学测试》感谢您的支持

 

 

 

标签:顺序,pytest,---,测试用例,print,执行,def
From: https://www.cnblogs.com/qican/p/17560619.html

相关文章

  • docker-compose 部署zookeeper
    docker-compose.yamlversion:'3.1'services:zoo1:image:zookeeperrestart:alwayshostname:zoo1ports:-2181:2181environment:ZOO_MY_ID:1ZOO_SERVERS:server.1=zoo1:2888:3888;2181server.2=zoo2:2888......
  • 5.5 集成学习- XGBoost
    1XGBoost的基础思想与实现1.1XGBoostpk梯度提升树极限提升树XGBoost(ExtremeGradientBoosting,XGB,发音/æks-g-boost/)是基于梯度提升树GBDT全面升级的新一代提升算法,也是提升家族中最富盛名、最灵活、最被机器学习竞赛所青睐的算法。不同于我们之前学过的任意单一算法,XGBo......
  • 240-960MHz带编码器的单片OOK 发射器CMT2157B
    CMT2157B是一款真正意义上的单芯片、高灵活性、超低功耗、带编码器的OOK射频发射芯片,非常适合于240至960MHz的无线应用场合。该芯片可实现完全兼容市面上最常用的527、1527、2262和2240等编码格式。此外,还支持用户各种自定义编码。该芯片支持4个独立按键或多达10个扫描按......
  • 【雕爷学编程】Arduino动手做(163)---大尺寸8x8LED方格屏模块6
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题......
  • TIM-PWM边沿检测时TI1F_ED的应用解析
    TIM-PWM边沿检测时TI1F_ED的应用解析定时器框图TI1F_ED指示如下所示:以TIMx_CH1的信号为例:TI1FP1和TI1FP2解析:从TIMx_CH1进入的TI1信号,经过输入滤波器生成TI1F,再经过边沿检测器(捕获极性选择上升沿或下降沿)生成TI1FP1和TI1FP2。TI1F_ED解析:TI1经过边沿检测器后生成TI1F_ED信号(双边沿......
  • Codeforces Round 885 (Div. 2) A-D
    A.VikaandHerFriends题意:有一个n*m大小的矩阵,vika在点(a,b),她的k个朋友在分别(xi,yi),所有人每分钟都可以上下左右走一格,每一分钟vika先走,她的朋友后走,不能不走,问vika能否躲过朋友。Solution结论题,只要有一个朋友和她的距离是奇数,那么她肯定会被追上。voidsolve(){ int......
  • Abp Blazor WebAssembly - Polymorphic DTO Deserialization using System.Text.Json
    @@abp4.0dtojobject https://stackoverflow.com/questions/70032776/abp-blazor-webassembly-polymorphic-dto-deserialization-using-system-text-json1AbpFrameworkversion:5.0.0-beta2,UI:BlazorWebAssemblyI'mattemptingtoimplementpolymo......
  • 第七节 搜索专题 - 3
    A.推箱子题目描述:推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个\(M\timesN\)的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子,因此如果箱子被推到一个角上(如图\(2\))那么箱子就不能再被移动了,如......
  • Linux磁盘专题-常用分区命令
    划分分区fdisk专门用于划分MBR类型的分区。(mbr分区类型在linx中也叫msdos)注意:fdisk在centos7上已经可以用来划分gpt类型的分区。详细不说了,N年之前学习过gdisk专用与划分gpt类型分区。大致操作和fdisk一样,不记录了,N年前学过。。partedparted之前懒得学,现在看了下也是......
  • Linux磁盘专题-linux文件系统详解
    这可是我几年前的杰作笔记呀.....当初手写计算都会,现在忘光光....物理硬盘Block的概念和作用硬盘底层一次IO就是读、写一次扇区,一个扇区默认是512Byte。读写大量文件如果以扇区为单位会很慢、性能不好,所以出现了逻辑块的概念(logicblock),也就是硬盘Block。逻辑块Block是......