Pytest 是 Python 的一种单元测试框架,与 Python 自带的 unittest 测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高。

Pytest 是一个成熟的全功能的 Python 测试工具,可以帮助你写出更好的程序,让我们很方便的编写测试用例。

适合从简单的单元到复杂的功能测试。有很多的第三方插件可以自定义扩展,并且支持 Allure,生成可视化的测试报告和测试结果,并能输出 log 信息。

Pytest官网,简单来说,就是你可以写一个测试的程序,尤其在实现项目之前,这样的好处是能够在一开始的时候(不知道代码逻辑之前)将目标的输出确认好,避免写出为了通过测试而测试的测试。

为什么要写测试?谁想进行手动测试?

当你修复错误或添加新功能时,测试可以验证你在途中有没有破坏任何内容

如果你有明确的要求,则可以针对每个要求进行匹配测试

你不必害怕重构

测试记录了你的实施 - 它们向其他人展示了你的实施案例

这份清单无穷无尽......

简而言之,TDD的基本思想是在编写实际实现之前编写测试。也许这种方法最重要的好处是开发人员专注于编写与程序应该做的匹配的测试。如果测试是在实际实施之后编写的,那么测试的风险很高,这些测试只是为已经编写的逻辑显示绿灯。

测试是现代敏捷软件开发中的重要的一环,这就是为什么在Python学习路径中尽早开始思考TDD的重要性。

TDD的工作流程可归纳如下:为你要实施的更改/功能/错误修复添加测试用例

运行所有测试并检查新测试是否失败

实施所需的更改

运行测试并验证是否全部通过

重构

在Notebook中运行pytest

这些是在Jupyter单元格中运行pytest所需的步骤。您可以将此单元格的内容复制到包含测试的Notebook中。

# Let's make sure pytest and ipytest packages are installed

# ipytest is required for running pytest inside Jupyter notebooks

import sys

!{sys.executable} -m pip install pytest

!{sys.executable} -m pip install ipytest

import ipytest.magics

import pytest

# Filename has to be set explicitly for ipytest

__file__ = 'testing1.ipynb'

Pytest测试用例

让我们考虑一下sum_of_three_numbers我们想要编写测试的函数。

如函数

#This would be in your e.g. implementation.py

def sum_of_three_numbers (num1 , num2 , num3 )中:

return num1 + num2 + num3

Pytest测试用例实际上与您在练习中看到的非常相似。通过将每个练习划分为三个单元格,大多数练习的结构类似于pytest测试用例:设置测试中使用的变量

你的实现

使用断言验证你的实现是否符合要求

请参阅下面的示例测试用例,以了解练习与测试用例的常见结构之间的相似之处。

%%run_pytest[clean]

# Mention this at the top of cells which contain test(s)

# This is only required for running pytest in Jupyter notebooks

# This would be in your test_implementation.py

def test_sum_of_three_numbers():

# 1. Setup the variables used in the test

num1 = 2

num2 = 3

num3 = 5

# 2. Call the functionality you want to test

result = sum_of_three_numbers(num1, num2, num3)

# 3. Verify that the outcome is expected

assert result == 10

现在继续更改该行assert result == 10,使断言无法看到失败测试的输出。

PS:Pytest有一个很重要的功能叫做Fixture:fixture是pytest特有的功能,它用pytest.fixture标识,定义在函数前面。在你编写测试函数的时候,你可以将此函数名称做为传入参数,pytest将会以依赖注入方式,将该函数的返回值作为测试函数的传入参数。

参考文献:

python中test的用法_Python基础介绍 | 使用pytest进行测试相关推荐

  1. python中symbols函数用法_Python基础之函数用法实例详解

    本文以实例形式较为详细的讲述了Python函数的用法,对于初学Python的朋友有不错的借鉴价值.分享给大家供大家参考之用.具体分析如下: 通常来说,Python的函数是由一个新的语句编写,即def, ...

  2. python中max函数用法_Python中max函数用法实例分析

    Python中max函数用法实例分析 更新时间:2015年07月17日 15:45:09 作者:优雅先生 这篇文章主要介绍了Python中max函数用法,实例分析了Python中max函数的功能与使用 ...

  3. python中lambda()的用法_python中lambda()的用法

    在C++11和C#中都有匿名函数的存在.下面看看在python中匿名函数的使用. 1.lambda只是一个表达式,函数体比def简单很多. 2.lambda的主体是一个表达式,而不是一个代码块.仅仅能 ...

  4. python中replace的用法_python中replace的用法是什么?

    python中replace的用法是什么? Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次. r ...

  5. python中sleep函数用法_python中sleep函数用法实例分析

    本文实例讲述了python中sleep函数用法.分享给大家供大家参考.具体如下: Python中的sleep用来暂停线程执行,单位为秒 #------------------------------- ...

  6. python中sleep的用法_python中sleep函数用法实例分析

    本文实例讲述了python中sleep函数用法.分享给大家供大家参考.具体如下: Python中的sleep用来暂停线程执行,单位为秒 #------------------------------- ...

  7. python中random模块用法_Python中random模块用法实例分析

    本文实例讲述了Python中random模块用法.分享给大家供大家参考.具体如下: import random x = random.randint(1,4); y = random.choice([ ...

  8. python中pivot函数用法_python中pivot()函数基础知识点

    不同于以往为大家介绍的函数使用,我们利用pivot函数可以实现的方式,就是用来重塑数据使用的,在python的使用上并不常见,但是如果需要利用这种功能,基本上能够被我们选择调用的函数,pivot函数一 ...

  9. python中byte2array报错_python基础-bytes和bytearray的用法

    Python中的序列类型有bytes和bytearray. 二进制序列类型的用法比较少见,是python中少用的一种序列类型,对于二进制序列类型,大家基本了解即可. bytes二进制序列类型 指定长度 ...

最新文章

  1. 提高C++性能的编程技术笔记:引用计数+测试代码
  2. 我的机器学习入门清单及路线!
  3. lingo变量无限制版本_java变量必看知识点
  4. select选择框变得可以输入、编辑
  5. js 让浏览器全屏模式的方法launchFullscreen
  6. [转]HTTP/3 未来可期?
  7. 用 Python 爬虫框架 Scrapy 爬取心目中的女神
  8. html自适应_web前端入门到实战:HTML 文档流,设置元素浮动,导致父元素高度无法自适应的解决方法...
  9. a as as big rat_超好玩!12句英语绕口令,你能一口气读完几句?
  10. python访问注册表_python读取注册表中值的方法
  11. Bootstrap 拼接式按钮菜单
  12. go语言调用c指针接口,GoLang之调用C接口的使用方法
  13. NOI2018网络同步赛爆零记
  14. 前端开发所需基本环境和软件配置
  15. Adobe Dreamweaver的使用教程
  16. C语言用结构体实现串口协议
  17. 企业微信sdk调用,通过手机号或微信好友添加客户
  18. 设备、设备控制器与驱动程序
  19. MySOL(狂殴26K字只为博君一赞)
  20. windows无法格式化u盘_Windows系统提示U盘无法完成格式化的解决方法

热门文章

  1. servlet的异步和非阻塞原理
  2. 新世纪五笔 形码之耻_世纪之剑
  3. python爬虫源码附注解_Python爬虫遇到验证码的几种处理方式,文章末尾有源码
  4. 【两种DbParameter的使用方式】防止SQL注入 C# MVC
  5. 创建pv卷报错excluded by a filter的解决办法
  6. varchar2和varchar的区别
  7. 安装虚拟计算机有什么用途,为什么要使用虚拟机软件?——VMware的介绍与安装...
  8. docker服务器搬迁后遇到的问题:宿主ip不通
  9. 倍数(Python)
  10. java apex_Apex基础知识(一)