首页 > 其他分享 >软件测试/测试开发/全日制|pytest用例执行顺序,这篇文章就够了

软件测试/测试开发/全日制|pytest用例执行顺序,这篇文章就够了

时间:2024-01-05 19:01:03浏览次数:35  
标签:__ 就够 --- 用例 pytest test 执行 软件测试

软件测试/测试开发/全日制|pytest用例执行顺序,这篇文章就够了_测试用例

前言

在使用unittest测试框架执行测试时,测试用例执行的顺序是默认按照ACSII码的顺序加载测试用例并执行,顺序为:0-9、A-Z、a-z,测试目录、测试模块、测试类、测试方法/测试函数都按照这个规则来加载测试用例。在有的时候,我们并不希望测试用例按照这样的规则来执行,pytest就可以让我们按照我们制定的规则来执行测试用例。本文就向大家介绍一下pytest用例执行顺序的这些事儿。

pytest默认执行顺序

  • 测试目录--->测试模块,按照排序执行:

我们的测试用例如下所示,放在两个文件夹中:

软件测试/测试开发/全日制|pytest用例执行顺序,这篇文章就够了_测试用例_02

我们通过命令执行这两个文件夹中的测试用例,结果如下图:

软件测试/测试开发/全日制|pytest用例执行顺序,这篇文章就够了_用例_03

  • 同一测试模块下的执行顺序
import pytest
 
class TestOrder:
 
    def test_e(self):
        print("test_e")
 
    def test_4(self):
        print("test_4")
 
 
    def test_b(self):
        print("test_b")
 
    def test_a(self):
        print("test_a")
 
    def test_2(self):
        print("test_2")
 
    def test_1(self):
        print("test_1")
 
 
if __name__ == '__main__':
    pytest.main(['demo.py','-s'])

执行结果如下:

demo.py test_e
.test_4
.test_b
.test_a
.test_2
.test_1
.

我们可以看出默认是自上而下依次执行的,如若遇到测试用例名称过长,也会根据字母的排序顺序执行,如下的代码执行时,就不会是自上而下,而是根据user_后边的第一个字母lr的排列顺序执行的:

class Demo:
    def test_user_register(self):
        '''注册'''
    print('=======test_user_register============')
 
 
    def test_user_login(self):
         '''登录'''
      print('=======test_user_login========')
 
if __name__ == '__main__':
    pytest.main(['test_user.py', '-vs'])

运行结果如下:

test_user.py::UserApiTest::test_user_login 
test_user.py::UserApiTest::test_user_register

自定义执行顺序

在我们的工作中,有时候需要pytest按照我们的需要的顺序来执行测试用例,pytest提供了一个插件来帮助我们实现这个功能,就是pytest-ordering,安装命令如下:

pip install pytest-ordering

注:pytest-ordering插件通常和@pytest.mark.run()结合使用。

class Test01():
 
    def test_02(self):
        print('\n---用例02---')
 
    @pytest.mark.run(order=2)
    def test_01(self):
        print('\n---用例01---')
 
    @pytest.mark.run(order=1)
    def test_03(self):
        print('\n---用例03---')
 
    def test_04(self):
        print('\n---用例04---')
 
 
if __name__ == '__main__':
    pytest.main(['test_demo.py', '-s'])

运行结果如下:

test_demo.py 
---用例03---
.
---用例01---
.
---用例02---
.
---用例04---
.

通过【运行结果】可以看出来,用例已经按照我们的要求,先执行用例3,在执行用例1,最后执行用例2的方法来的,这里需要注意的是,如果你在那个用例上面没有添加执行顺序要求的话,他会先执行带有标记的用例,然后根据未标记的用例顺序进行执行。

总结

pytest管理用例执行顺序的方式比较灵活,并且允许并行执行以提高效率。尽管它默认的执行顺序可能不符合期望,但通过一些装饰器、插件或者利用Fixture的scope,我们可以在需要时控制用例的执行顺序,以满足特定的测试需求。但在实际操作中,我们不应该让用例的执行有先后顺序,即任意单独的测试用例都是独立的完整的功能点的校验,不对其他用例有依赖。希望本文能够帮到大家!


标签:__,就够,---,用例,pytest,test,执行,软件测试
From: https://blog.51cto.com/u_15640304/9116937

相关文章

  • 软件测试/测试开发/全日制|Pytest参数化神器,pytest.mark.parametrize()使用
    前言当我们要使用pytest输入多个数据对一个功能进行测试时,如果写多个测试用例的话,那就完全体现不出通过代码来执行测试的优势了,这个时候,就轮到pytest的参数化功能闪亮登场了。所谓参数化,就是就是把测试过程中的数据提取出来,通过参数传递不同的数据来驱动用例运行。其实也就是数据驱......
  • Pytest07-pytest.ini配置文件
    1.pytest配置文件固定名称:pytest.ini作用域:当前目录及子目录具体配置功能见下:[pytest]#01把命令行参数自动添加到这里addopts=-s-v--html=./report/report2023.html#02指定执行的用例的目录testpaths=./script#03修改默认的测试文件名规则python_files=au......
  • Python+Requests+PyTest+Excel+Allure 接口自动化测试实战
    本文主要介绍了Python+Requess+PyTest+Excel+Allure接口自动化测试实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit......
  • Pytest06-pytest的setup和teardown函数
    高清B站视频链接pytest的setup和teardown函数用例前置和后置#类外面setup_module/teardown_module:在当前文件中,所有的用例执行之前以及之后执行setup_function/teardown_function:在每个测试函数之前以及之后执行setup/teardown:在每个测试函数之前以及之后执行#类里面......
  • 软件测试/测试开发全日制培训|Pytest跳过用例和失败重试
    前言在我们日常进行自动化测试时,经常会遇到功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了,如果我们注释掉或删除掉这些测试用例,后面可能还要进行恢复操作,这个时候pytest的跳过测试功能就能帮助我们,先跳过,等到问题解决时,恢复执行即可;同时我们还有可能会遇到需要对失败用例重......
  • 软件测试/测试开发|什么是Python,我们为什么选择Python?
    简介要说最近几年,哪个编程语言是最受欢迎的?学习人数最多的?那非Python莫属,加上人工智能时代的到来,Python热度就更加持续,那么Python为什么能够超越Java和C语言,成为现在最受欢迎的语言呢?本文就带大家一探究竟。Python简介Python发展背景Python是一种高级编程语言,由荷兰人吉多·范罗苏......
  • 软件测试/测试开发|什么是pytest,我们为什么选择pytest?
    前言作为一个程序猿,免不了要为自己写的代码做单元测试,因为我是一个Pythoner,所以最开始用的是unittest测试框架,但是我的使用体验很不好,后面我了解到了pytest,简直能把uinttest秒成渣,在这里和大家一起分享下pytest使用经验,本文先来给大家介绍一下pytest以及它如何安装,运行一下最简单的......
  • 全日制软件测试开发 | 测试管理圆桌讨论会精彩时刻回顾(上)
    很高兴大家来参加测试管理圆桌讨论会,本次我们邀请了4位嘉宾,他们的工作履历几乎涵盖了目前互联网行业的头部公司。嘉宾介绍Angelia:资深的项目经理,多次搭建研发团队,目前在外企做PMO成员。强哥:曾在阿里担任测试负责人,负责过很多大型项目测试工作,在技术和管理方面都有很深的造诣。涛哥......
  • 软件测试/测试开发|一文告诉你Python列表相关操作
    列表是Python中最常用的数据类型之一。它是一种有序、可变,异构的数据集合,可以存储多个不同类型的元素。列表的特点列表是Python中的一种数据结构,具有以下特点:有序性:列表中的元素按照添加的顺序进行存储,每个元素都有一个对应的索引,可以通过索引访问和操作列表中的元素。可变性:列......
  • pytest自动化测试中的fixture的声明和调用
    1.fixture的声明我们使用@pytest.fixture()来声明fixture函数。fixture()即可无参数进行声明,也可以带参数声明。示例1:@pytest.fixture()无参数进行声明[email protected]#fixture()未带任何参数,声明一个fixture函数deffixture_demo():print("这个是一......