当前位置: 首页 > news >正文

pytest的安装和介绍和 Exit Code 含义

pytest


准备工作(在cmd里):

1安装

pip install -U pytest

2验证安装

pytest --version # 会展示当前已安装版本

3其他的

显示可用的内置函数参数

pytest --fixtures

通过命令行查看帮助信息及配置文件选项

pytest --help
一、pytets框架中的约束

所有的单测文件名都需要满足test_.py格式或_ test.py格式。
在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
在单测类中,可以包含一个或多个test_开头的函数。
此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。
断言必须使用assert

二、arrtest断言语句
  • pytest中的assert是一种断言语句,用于检查测试结果是否符合预期。它用于在测试代码中判断某个条件是否为真,如果条件为假,则会抛出一个AssertionError异常,并且测试将被标记为失败。
import pytestdef test_a():print("--tast_a")assert 1def test_b():print("--test_b")assert 0def add(a, b):return a + bdef test_add():assert add(2, 3) == 5assert add(0, 0) == 0assert add(-1, 1) == 0if __name__ == '__main__':pytest.main("-s test_abc.py")
  • 如果其中任何一个assert语句失败,测试将被标记为失败,并且会显示相应的错误消息。

    最后用的是pytest的测试类主函数

    命令行模式(编译器中的终端)

    pytest 文件路径/测试文件名
    例如:pytest ./test_abc.py
    

    请添加图片描述

三、pytest中测试类主函数

在main()中传参就相当于输出了pytest -*

可以多个传参:

eg:

pytest.main(["-s", "-x"])

main() 函数如果不带任何参数,那么执行的效果跟我们在 cmd 直接运行 pytest 命令一样,默认运行的是当前目录及子目录的所有文件夹的测试用例。

-m=xxx: 运行打标签(装饰器:@pytest.mark.xx)的用例

-reruns=xxx:失败重新运行

-q: 安静模式, 不输出环境信息

-v: 丰富信息模式, 输出更详细的用例执行信息

-s: 显示程序中的print/logging输出

-k:可以使用and、not、or等逻辑运算符,区分:匹配范围(文件名、类名、函数名)

-x: 出现一条测试用例失败就退出测试。调试阶段非常有用

–resultlog=./log.txt 生成log

–junitxml=./log.xml 生成xml报告

1、 -s的作用
  • 显示测试函数的打印和输出,默认情况下pytest会隐藏来保持测试报告的整洁性。但是,有时候我们需要查看测试函数中的打印输出,以便进行调试或查找问题。-s就是让他们显示在控制台上。

  • 上面的代码测试结果中显示test_a、b的输出

请添加图片描述

0、 Pytest Exit Code 含义清单

测试结束后最后一行会出现with exit code *,其中含义:

  • Exit code 0 所有用例执行完毕,全部通过
  • Exit code 1 所有用例执行完毕,存在Failed的测试用例
  • Exit code 2 用户中断了测试的执行
  • Exit code 3 测试执行过程发生了内部错误
  • Exit code 4 pytest 命令行使用错误
  • Exit code 5 未采集到可用测试用例文件
2、-m的作用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3、-q的作用

只显示测试结果的总结,不输出环境信息

试了一下没看出区别下次学习的时候研究一下

4、-v的作用
5、-–resultlog=./log.txt的作用
6、-reruns的作用
7、–junitxml=./log.xml的作用
8、-k
9、-x

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • IOS-05 Swift循环控制语句
  • 修复SteamUI.dll加载失败的指南,快速修复failed to load steamui.dll
  • 【Android】Fragment的添加
  • 【Golang 面试 - 基础题】每日 5 题(五)
  • opencascade AIS_ManipulatorOwner AIS_MediaPlayer源码学习
  • 使用 Docker Compose 部署 RabbitMQ 的一些经验与踩坑记录
  • Python 消费Kafka手动提交 批量存入Elasticsearch
  • 微信小程序-使用Component方法代替Page方法构造页面
  • Profinet转EtherNet/IP协议转化网关(功能与配置)
  • DT浏览器使用教程之如何写书法笔记
  • mysql特殊字符、生僻字存储设置
  • idea-springboot后端所有@注释含义汇总-持续更新!
  • C++ 学习补充 1:短链算法
  • 高效掌握芯片设计技术的不二选择
  • 【redis】一致性hash算法和hash槽
  • ComponentOne 2017 V2版本正式发布
  • HTTP 简介
  • JavaScript服务器推送技术之 WebSocket
  • JSONP原理
  • js递归,无限分级树形折叠菜单
  • linux学习笔记
  • PV统计优化设计
  • 笨办法学C 练习34:动态数组
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 解析带emoji和链接的聊天系统消息
  • 设计模式走一遍---观察者模式
  • 事件委托的小应用
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 项目实战-Api的解决方案
  • hi-nginx-1.3.4编译安装
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (1)(1.9) MSP (version 4.2)
  • (CPU/GPU)粒子继承贴图颜色发射
  • (day6) 319. 灯泡开关
  • (Java)【深基9.例1】选举学生会
  • (八)c52学习之旅-中断实验
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (十六)视图变换 正交投影 透视投影
  • (四)js前端开发中设计模式之工厂方法模式
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)VC++中ondraw在什么时候调用的
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net core使用ef 6
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 回调、接口回调、 委托
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)