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

pytest入门

零基础1小时快速入门pytest自动化测试教程,全套项目框架实战

关于pytest的入门教程,官网及网上已经很多了,那再多一点也无所谓吧!OK,进入正题~

  下面是一个测试用例,test_one.py

def test_passing():
    assert (1, 2, 3) == (1, 2, 3)

  在用例当前路径打开终端,输入pytest test_one.py,运行结果如下:

============================= test session starts =============================

platform win32 -- Python 3.7.0, pytest-3.9.2, py-1.5.4, pluggy-0.8.0

rootdir: G:\pytest\bopytest-code\code\ch1, inifile:

collected 1 item

test_one.py .                                                            [100%]

========================== 1 passed in 0.10 seconds ===========================

  下面来逐句说明下pytest运行单个测试文件时的控制台输出信息:

============================= test session starts =============================

  pytest为每段测试会话(session)做了明确的分隔,一段会话就是pytest的一次调用,它可能包括多个目录下被执行的测试用例。

platform win32 -- Python 3.7.0, pytest-3.9.2, py-1.5.4, pluggy-0.8.0

  我使用的windows电脑,所以显示的是platform win32。接着显示Python、Pytest以及pytest包的版本。py和pyluggy都是pytest包,用于pytest的实现,均由pytest团队开发维护。

rootdir: G:\pytest\bopytest-code\code\ch1, inifile:

  rootdir(当前起始目录)是pytest搜索测试代码时最常使用的目录,inifile用于列举配置文件(这里没有指定),文件名可能是pytest.ini、tox.ini或者setup.cfg。

collected 1 item

  搜索范围内找到一个名为test_one.py的测试条目。

test_one.py .                                                            [100%]

  test_one.py表示测试文件,每个文件的测试情况占据一行,后接的一个点号表示该测试用例已通过。点号仅仅表示通过,而Failurt(失败)、error(异常)、skip(跳过)、xfail(预期失败)、xpass(预期失败但通过)会被分别标记为F、E、s、x、X。使用-v或--verbose可以看到更多细节。100%表示测试完毕。

========================== 1 passed in 0.10 seconds ===========================

  表示测试通过的数量以及这段会话耗费的时间,如果存在未通过的测试用例,则会根据未通过的类型列举数量。

如上面提到的如果想查看详情,可以在pytest后面加上-v或者--verbose选项,pytest -v test_one.py:

============================= test session starts =============================

platform win32 -- Python 3.7.0, pytest-3.9.2, py-1.5.4, pluggy-0.8.0 -- f:\progr am files\python\python.exe

cachedir: .pytest_cache

rootdir: G:\pytest\bopytest-code\code\ch1, inifile:

collected 1 item

test_one.py::test_passing PASSED                                         [100%]

========================== 1 passed in 0.02 seconds ===========================

  加上-v后,会在测试文件名后显示函数名以及大写的测试结果。如果使用的彩色终端,那么PASSED和底部线条都是绿色的。如下:

  

   下面是一个失败的测试用例,test_two.py:

def test_failing():
    assert (1, 2, 3) == (3, 2, 1)

  运行结果如下:

  

  pytest展示了很清楚的失败信息,这也是它受欢迎的原因之一。

  如上,pytest有一块专门的区域展示test_failing的失败信息,它能准确指出失败原因:index 0 is mismatch。并且重要的提示信息用红色字体显示,以方便用户阅读。如果你仔细观察,还有一条提示指出,使用-v可以得到更完整的前后对比信息,如下图:

  

  pytest添加几个脱字符(^),准确地指出了前后的区别。

  终端运行pytest --help:

  usage: pytest [options] [file_or_dir] [file_or_dir] [...]

  第一句就说明了使用语法,如果你不提供任何参数,pytest会在当前目录以及子目录寻找测试文件,然后运行搜索到的测试代码。如果你提供一个或者多个文件名、目录名,pytest会逐个查找并运行所有测试。为了搜索到所有测试代码,pytest会递归遍历每个目录及其子目录。

  如在之前路径下直接运行pytest,结果如下 :

  

  也可以在pytest中指定需要测试的文件名或者目录,或者预先切换到需要运行的目录:

  

  我们把pytest搜索测试文件和测试用例的过程称为测试搜索(test discovery)。只要你按pytest的命名规则,pytest就能自动搜索到所有待执行的测试用例。

  以下是几条主的命名规则:

  1. 测试文件应当命名为 test_<something>.py或者<somethins>_test.py

  2. 测试函数、测试类方法应当命名为test_<something>

  3. 测试类应当命名为Test<Something>.


文章转载自:

http://HEXKAN9v.wbLpn.cn
http://69fiUEAC.wbLpn.cn
http://nx46eJIO.wbLpn.cn
http://lK05jMnQ.wbLpn.cn
http://lsSkapoC.wbLpn.cn
http://3PYWjp5O.wbLpn.cn
http://czroUZ8W.wbLpn.cn
http://qzUPM9j2.wbLpn.cn
http://Ny5ctmwm.wbLpn.cn
http://IalZEXBs.wbLpn.cn
http://vDyZ4Xqu.wbLpn.cn
http://bfGR6bYS.wbLpn.cn
http://j0Muyq7p.wbLpn.cn
http://HvXY4R2b.wbLpn.cn
http://owJvv2ZL.wbLpn.cn
http://3loNDtQW.wbLpn.cn
http://a5PrtMWf.wbLpn.cn
http://oSGh6C5C.wbLpn.cn
http://1d7dMVvy.wbLpn.cn
http://tQWQdedh.wbLpn.cn
http://f9l9Ryhr.wbLpn.cn
http://yb6O0NA9.wbLpn.cn
http://JEa1EFGD.wbLpn.cn
http://Cmrbq7CY.wbLpn.cn
http://J35wpHdl.wbLpn.cn
http://643a47rz.wbLpn.cn
http://GXNgbmAZ.wbLpn.cn
http://Xyhvji4F.wbLpn.cn
http://zydWiP9U.wbLpn.cn
http://3WYaVTgh.wbLpn.cn
http://www.dtcms.com/a/386888.html

相关文章:

  • 设计模式第二章(装饰器模式)
  • ​​解决大模型幻觉全攻略:理论、技术与落地实践​
  • qt QCandlestickSeries详解
  • 量化研究--高频日内网格T0策略研究
  • [Dify] 自动摘要与精炼:构建内容浓缩型工作流的实践指南
  • Windows安装mamba最佳实践(WSL ubuntu丝滑版)
  • 黑马头条_SpringCloud项目阶段一:环境搭建(Mac版本)
  • Java 设计模式全景解析
  • 【Python】OS模块操作目录
  • 深度学习基本模块:LSTM 长短期记忆网络
  • 初始化Vue3 项目
  • 耕地质量评价
  • MeloTTS安装实践
  • 国产化芯片ZCC3790--同步升降压控制器的全新选择, 替代LT3790
  • LeetCode 977.有序数组的平方
  • 佳易王个体诊所中西医电子处方管理系统软件教程详解:开方的时候可一键导入配方模板,自由添加模板
  • C#实现WGS-84到西安80坐标系转换的完整指南
  • rabbitmq面试题总结
  • 【Java初学基础】⭐Object()顶级父类与它的重要方法equals()
  • C语言初尝试——洛谷
  • Kaleidoscope for Mac:Mac 平台文件与图像差异对比的终极工具
  • LeetCode 刷题【80. 删除有序数组中的重复项 II】
  • 淘宝扭蛋机小程序系统开发:引领电商娱乐化潮流
  • 【车载audio开发】【基础概念2】【Usage、ContentType、Flags、SessionId之间的关系】
  • 【Day 52 】Linux-Jenkins
  • 向内核社区提交补丁
  • 【Java-常用类】
  • 在线教程丨ACL机器翻译大赛30个语种摘冠,腾讯Hunyuan-MT-7B支持33种语言翻译
  • 006 Rust基本数据类型
  • docker配置代理加速