pytest-命令行参数

news2025/1/12 3:57:57

命令行参数

使用 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

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

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

相关文章

中霖教育:二级建造师能同时报名参加多个省份的考试吗?

【中霖教育口碑】【中霖教育好吗】 二级建造师考试能同时报名参加多个省份吗?原则上是可以的。 二级建造师的报名过程需满足各省份设定的特定标准,申请者需提供相应省份注册的工程建设企业的工作年限证明,并在报名表上加盖章以证明企业身份。 部分省…

【电源专题】为什么带电量计芯片的电池MOS保护要放在高侧

在实际的电量计电池开发中,发现一个很奇怪的现象。传统电池保护IC往往都是将充电保护和放电保护的两个MOS管放在低侧的。如下所示是文章:【电源专题】读一读单节锂电池保护IC规格书 可以看到M1和M2两个MOS管是放在PB-(也就是电池的负端),我们叫做低端。 而BQ28Z610电…

LC437.路径总和Ⅲ、LC207.课程表

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点&am…

【小沐学AI】Python实现语音识别(whisperX)

文章目录 1、简介1.1 whisper1.2 whisperX 2、安装2.1 安装cuda2.2 安装whisperX 结语 1、简介 1.1 whisper https://arxiv.org/pdf/2212.04356 https://github.com/openai/whisper Whisper 是一种通用语音识别模型。它是在各种音频的大型数据集上训练的,也是一个…

打开防火墙设置提示需要使用新应用以打开此windowsdefender

拿到一台新电脑,装好虚拟机。主机ping虚拟机正常,虚拟机上网也正常,但是虚拟机ping主机ping不通。根据我多年虚拟机使用经验,这显然是因为主机防火墙没关。但是当我准备关闭主机防火墙的时候,发现防火墙设置打不开。界…

rtthread stm32h743的使用(十二)spi设备fal驱动的使用

我们要在rtthread studio 开发环境中建立stm32h743xih6芯片的工程。我们使用一块stm32h743及fpga的核心板完成相关实验,核心板如图: fal驱动的使用是建立在sfud驱动之上的,所以我们在上一节使用的工程基础上继续实验。 1.在上一节工程的基础…

互联网大厂核心知识总结PDF资料

我们要敢于追求卓越,也能承认自己平庸,不要低估3,5,10年沉淀的威力 hi 大家好,我是大师兄,大厂工作特点是需要多方面的知识和技能。这种学习和积累一般人需要一段的时间,不太可能一蹴而就&…

Swift宏的实现

上篇介绍了Swift宏的定义与生声明,本篇主要看看是Swift宏的具体实现。结合Swift中Codable协议,封装一个工具让类或者结构体自动实现Codable协议,并且添加一些协议中没有的功能。 关于Codable协议 Codable很好,但是有一些缺陷&…

Cherno 游戏引擎笔记 (45~60)

有几个部分的笔记以图片形式呈现(如果没找到文本可以查看是否遗漏了图片笔记) My Github REPO(GitHub - JJJJJJJustin/Nut: The game_engine which learned from Cherno) 源码笔记,希望帮到你 :-} ---Shader Library(着色器库&…

x-file-storage一行代码进行文件上传,摆脱阿里云,腾讯云,华为云等不同云的学习,简单高效

问题: 不使用x-file-storage时如果使用某个云首先需要学习他的sdk,这样很麻烦,而x-file-storage集成了各种云的上传,只需要进行配置即可一行代码进行上传 使用 官方地址:X File Storage 一行代码将文件存储到本地、FTP、SFTP、…

线性表与顺序存储结构(下)

前言 接上文(线性表与顺序存储结构(上))。 这些顺序存储结构的方法在顺序表上下卷中已经提到过,但是有些许不同,可以为理解顺序表提供更丰富的视角。(不过最主要的区别在于顺序表上下卷中的顺…

一个合理的前端应用文件结构

在大型应用中,最关键且最具挑战性的方面之一就是拥有一个良好且合理的文件结构。在考虑通过微前端将代码库拆分成多个应用之前,可以遵循一些步骤来改善项目级别的架构,并在您考虑这一路径时使过渡更容易。 我们的目标是应用某种模块化方法&am…

关于图片大小问题造成的QPixmap或QImage读取图片失败的解决办法

今天碰到一个奇怪又离谱的问题 : 图片加载失败。明明路径是正确的,图片也实实在在存在。。。 经过比对,发现如下问题: 我就齐了怪了 这大小怎么差这么多?会不会是这里除了问题。秉持着怀疑的态度,我试着用GIMP重新导出…

java笔记(30)——反射的 API 及其 使用

文章目录 反射1. 什么是反射2. 获取class字段(字节码文件对象)方式1方式2方式3应用 3. 获取构造方法和权限修饰符前期准备获取所有的公共构造方法获取所有的构造方法获取无参构造方法获取一个参数的构造方法获取一个参数的构造方法获取两个参数的构造方法…

查看Linux系统中用过什么命令 history

提示:以下所有命令都在Ubuntu-24.04-live-server-amd64系统中运行 文章目录 前言一、基本用法:二、查看其他用户历史三、增加时间戳结语 前言 history 命令用于显示和操作当前用户在当前会话中执行过的命令历史记录。它是 Bash shell 的内置命令&#x…

架构设计上中的master三种架构,单节点,主从节点,多节点分析

文章目录 背景单节点优点缺点 主从节点优点缺点 多节点优点缺点 多节点,多backup设计优点缺点 总结 背景 在很多分布式系统里会有master,work这种结构。 master 节点负责管理资源,分发任务。下面着重讨论下master 数量不同带来的影响 单节点 优点 1.设…

PTA:7-194 循环结构 —— 中国古代著名算题。趣味题目:物不知其数。

作者 苑丽红 单位 长春理工大学 中国古代著名算题。原载《孙子算经》:“今有物不知其数,三三数之剩二;五五数之剩三;七七数之剩二。问物几何?”。本题要求:设某物数量是 N,且三三数剩 x,五五…

如何在Ubuntu20上离线安装joern(包括sbt和scala)

在Ubuntu 20上离线安装Joern,由于Joern通常需要通过互联网从其官方源或GitHub等地方下载,但在离线环境中,我们需要通过一些额外的步骤来准备和安装。(本人水平有限,希望得到大家的指正) 我们首先要做的就是…

Excel 快速查询工具 2023.7.1 更新

Excel 快速查询工具作者表示这个软件是因为有时候需要在 Excel 和网站之间进行切换非常的麻烦,这款软件可以以半透明的方框位于桌面上。 特点 软件窗口半透明并至于顶部,无需来回切换界面。 实时查询,不用点击查询或者按回车之类的&#x…

什么是Cookie?有什么用?如何清除浏览器中的Cookie?

互联网上的每一次点击和每一个选择都可能被一种名为Cookie的技术记录下来。但Cookie是什么?我们在网站上登录时,为什么经常会被问及是否接受Cookie?接受Cookie登录会不会影响我们的在线隐私? Cookie是什么? Cookie是一…