3种方法,教你用Pytest更改自动化测试用例执行顺序!

news2024/11/25 13:38:09

前言

在自动化测试中,自动化测试用例设计原则就是:执行过程时不能存在依赖顺序。那么如果测试用例需要按照指定顺序执行,这个时候应该怎么做呢?

目前单元测试框架中UnitTest没有办法改变测试用例的执行顺序,但是另一个单元测试框架Pytest可以做到,辅助测试人员更改测试用例的执行顺序。

今天小编简单的介绍几种方法,教你如何通过Pytest进行更改自动化测试用例的执行顺序。

pytest

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

# coding:utf-8import pytestdef 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-8import 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')

(左右滑动查看完整代码)

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

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

pytest_collection_modifyitems

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

/

使用方法

/

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

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

(左右滑动查看完整代码)

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

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

(左右滑动查看完整代码)

总结

小编通过简单的案例介绍了如何在Pytest中改变测试用例的执行顺序。

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

END今天的分享就到此结束了,点赞关注不迷路 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1202587.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1688商品采集api接口1688代购商品采集API商品详情数据获取

做小程序商城时,最崩溃的瞬间是什么? 一定是当你有几百件商品,却要一件一件编辑商品名称、规格、上传图片吧…… 为了帮助商家快速上货开店,特意提供了1688的获取商品详情数据的接口,方便商家一键采集淘宝、天猫、京…

【广州华锐视点】海外制片人VR虚拟情景教学带来全新的学习体验

虚拟现实(Virtual Reality,简称VR)是一种利用电脑模拟产生一个三维的虚拟世界,提供用户关于视觉、听觉、触觉等感官的模拟体验的技术。随着科技的进步,VR已经被广泛应用到许多领域,包括游戏、教育、医疗、房…

Outlook如何恢复已删除邮件

Outlook如何恢复已删除邮件 操作指引: Outlook客户端恢复最近7天删除的邮件: Outlook客户端要求最新版本,如没有如下选项,建议联机更新windows update 网页邮箱恢复最近7天删除的邮件:

极智芯 | GPU架构与计算能力

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文分享一下 GPU架构与计算能力。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https:…

黑客技术(网络安全)—高效自学

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学 今天给大家分享一下,很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习…

subprocess 模块用法

如果你只关心命令的标准输出,并且希望在命令执行失败时引发异常,可以使用 check_output。如果你需要更多的控制,例如与正在运行的进程进行交互,可以使用 Popen。如果你希望获取标准输出和命令的状态码,可以使用 getsta…

数据结构-数型查找

二叉排序树(BST) 二叉排序树,又称二叉查找树(BST,Binary Search Tree) 一颗二叉树或者是空二叉树,或者是具有如下性质的二叉树: 左子树上所有结点的关键字均小于根结点的关键字&…

LeetCode(9)跳跃游戏【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 55. 跳跃游戏 1.题目 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回…

在Linux系统下微调Llama2(MetaAI)大模型教程—Qlora

Llama2是Meta最新开源的语言大模型,训练数据集2万亿token,上下文长度是由Llama的2048扩展到4096,可以理解和生成更长的文本,包括7B、13B和70B三个模型,在各种基准集的测试上表现突出,最重要的是&#xff0c…

《QT从基础到进阶·二十二》QGraphicsView显示大量图形项item导致界面卡顿的解决办法

有时候因业务需要,paint函数在界面上绘制了成百上千个图形项Items,导致操作界面的时候有明显的卡顿感,下文会提供一种比较好的解决办法,先来了解下QGraphicsItem的缓存方式。 (1)setCacheMode(QGraphicsIt…

0基础学习PyFlink——水位线(watermark)触发计算

在《0基础学习PyFlink——个数滚动窗口(Tumbling Count Windows)》和《0基础学习PyFlink——个数滑动窗口(Sliding Count Windows)》中,我们发现如果窗口中元素个数没有把窗口填满,则不会触发计算。 为了解决长期不计算的问题&a…

日志及其框架

日志技术的概述 日志 生活中的日志: 生活中的日志就好比日记,可以记录你生活的点点滴滴。 程序中的日志: 程序中的日志可以用来记录程序运行过程中的信息,并可以进行永久存储。 以前记录日志的方式(输出语句&#…

设置专属链接的这些作用你知道吗?

专属链接作为一种个性化的链接,用于为特定的客户或群体提供定制化的体验或服务。对于企业来说,每个渠道或者每个客户都能拥有一个专属链接是无比便利的事情。企业可以将这个链接嵌入到各种宣传物料中,让客户通过输入链接即可进入与客服的交流…

thinkphp5 连接多个服务器数据库

如果你的database.php 是这样, 这是默认的db连接配置 如果还想连接其他服务器,或数据库 在config.php中追加数据库配置, 在使用的地方调用: use think\Db;public function test(){$db3Db::connect(config(db3));$result $db3…

使用Python的requests库模拟爬取地图商铺信息

目录 引言 一、了解目标网站 二、安装requests库 三、发送GET请求 四、解析响应内容 五、处理异常和数据清洗 六、数据存储和分析 七、数据分析和可视化 八、注意事项和最佳实践 总结 引言 随着互联网的快速发展,网络爬虫技术已经成为获取数据的重要手段…

Leetcode-104 二叉树的最大深度

递归实现 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

谈谈steam游戏搬砖的收益与风险,以及注意事项

11月CSGO市场行情分析,是否到了该抄底的时候了? 今天,要跟大家分享的Steam平台——全球最大的游戏平台,现在给大家介绍下steam搬砖项目,这个项目既小众又稳定。 先了解一下 steam这个平台是做什么的,steam…

navicat创建MySql定时任务

navicat创建MySql定时任务 前提 需要root用户权限 需要开启定时任务 1、开启定时任务 1.1 查看定时任务是否开启 mysql> show variables like event_scheduler;1.2 临时开启定时任务(下次重启后失效) set global event_scheduler on;1.3 设置永久开启定时任务 查看my…

c语言-数据结构-带头双向循环链表

目录 1、双向循环链表的结构 2、双向循环链表的结构体创建 3、双向循环链表的初始化 3.1 双向链表的打印 4、双向循环链表的头插 5、双向循环链表的尾插 6、双向循环链表的删除 6.1 尾删 6.2 头删 6.3 小节结论 7、查找 8、在pos位置前插入数据 9、删除pos位…

Scala---介绍及安装使用

一、Scala介绍 1. 为什么学习Scala语言 Scala是基于JVM的语言,与java语言类似,Java语言是基于JVM的面向对象的语言。Scala也是基于JVM,同时支持面向对象和面向函数的编程语言。这里学习Scala语言的原因是后期我们会学习一个优秀的计算框架S…