通过测试可确定代码面对各种输入都能按要求的那样工作。Python提供了unittest模块中的工具来测试代码。

1. 测试函数:

单元测试和测试用例:

unittest模块提供了代码测试工具。

单元测试用于核实函数的某个方面没有问题;测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。

良好的测试考虑到了函数可能接收到的各种输入,包含针对所有这些情形的测试。

全覆盖测试用例则包含一整套单元测试,涵盖了各种可能的函数使用方式。

可通过的测试:

测试用例创建后,再添加针对函数的单元测试就很简单了。

为函数编写测试用例,先导入unittest模块以及要测试的函数,再创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。

不能通过的测试:

修改下函数:

运行单元测试后:


测试输出中:

E(error)指出测试用例中有一个单元测试导致了错误。

根据标准的traceback,它指出了具体哪行有问题及出现问题的原因。

测试未通过时如何解决:

如果检查的条件没错,测试通过了意味着函数的行为是对的,而测试未通过意味着编写的新代码有错。

测试未通过时,不要修改测试,而应修复导致测试不能通过的代码:检查刚对函数所做的修改,找到导致函数行为不符合预期的修改。

例如上面的错误,只需要将函数修改为如下再运行测试:

将middle参数设置为可选的,将形参移动到形参列表末尾,并将其默认值指定为一个空字符串。


2.测试类:

各种断言方法:

unittest.TestCase类中提供了大量的断言方法。

断言方法检查我们认为应该满足的条件是否满足条件。如果确实满足,则对假设得到了确认。如果实际上并不满足,则Python引发异常。

unittest Module中的断言方法
assertEqual(a,b) 核实a==b
assertNotEqual(a,b) 核实a!=b
assertTrue(x) 核实x为True
assertFalse(x) 核实x为Flase
assertIn(item,list) 核实item在list中
assertNotIn(item,list) 核实item不再list中

上面的断言方法,可以核实返回的值是否等于预期的值、返回的值为True/False、返回的值是否在列表中。只能在继承unittest.TestCase的类中使用这些方法。

测试用例类:

unittest.TestCase#setUp()方法:

上面的代码中,每个测试方法都需要创建一个AnnoymousSurvey类实例。

unittest.TestCase#setUp()方法允许我们只需要创建这些对象一次,并在每个测试方法中使用他们。

如果在TestCase类中包含了setUp()方法,Python将先运行它,再运行各个以test_开头的方法。这样,在编写每个测试方法中都可使用方法setUp()中创建对象了。

setUp()方法存储的东西的变量名包含前缀self(即存储在属性中),因此可在这个类的任何地方使用。可在setUp()方法中创建一系列实例并设置他们的属性,再在测试方法中直接使用这些实例。相比于子在每个测试方法中都创建实例并设置属性,着要容易的多。

图中的setUp()做了2件事情:创建一个对象、创建一个答案列表。

存储这2样东西的变量名包含前缀self(即存储在属性中),因此我们可以在这个类的任何地方使用。

Python: 测试相关推荐

  1. Python 测试开发从入门到高手成长之路

    > 文末领取测试开发进阶指南和福利! 在" **质量第一,效率为王** "的移动互联网和大数据时代,互联网 IT 技术团队为了应对产品快速迭代要求,就必须具备持续交付的能力. ...

  2. Python测试框架pytest(05)fixture - error和failed、fixture实例化、多个fixture

    Python测试框架pytest系列可以查看下列 Python测试框架pytest(01)简介.安装.快速入门_编程简单学的博客-CSDN博客 Python测试框架pytest(02)PyCharm设 ...

  3. Python测试框架pytest(04)fixture - 测试用例调用fixture、fixture传递测试数据

    Python测试框架pytest系列可以查看下列 Python测试框架pytest(01)简介.安装.快速入门_编程简单学的博客-CSDN博客 Python测试框架pytest(02)PyCharm设 ...

  4. Python测试框架pytest(03)setup和teardown

    Python测试框架pytest系列可以查看下列 Python测试框架pytest(01)简介.安装.快速入门_编程简单学的博客-CSDN博客 ​​​​​​Python测试框架pytest(02)Py ...

  5. Python测试框架pytest(01)简介、安装、快速入门

    1.简介 pytest 是成熟的功能齐全的 Python 测试工具,可帮助你编写更好的程序. pytest 是一个使构建简单和可伸缩的测试变得容易的框架.测试具有表达性和可读性,不需要样板代码.几分钟 ...

  6. python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...

    教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql Easy_install安装MySQLdb 很简单,以至于我不晓得该怎么说.一句话. sodu ...

  7. python测试代码怎么写_Python 单元测试

    Test your software, or your users will. "Test ruthlessly. Don't make your users find bugs for y ...

  8. python测试开发自学教程-2019第一期《python测试开发》课程,10月13号开学

    2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...

  9. python测试开发自学教程-测试开发学习路线图

    Python PEP8 编码规范中文版 https://www.cnblogs.com/bymo/p/9567140.html 选择等宽编程字体:https://blog.csdn.net/hsc45 ...

  10. 收藏清单: python测试框架最全资源汇总

    xUnit frameworks 单元测试框架 frameworks 框架 unittest - python自带的单元测试库,开箱即用 unittest2 - 加强版的单元测试框架,适用于Pytho ...

最新文章

  1. 阿里云飞天技术出海 eWTP落地马来西亚
  2. 用命令行连接到远程计算机
  3. (32)第一个驱动程序
  4. 全国计算机二级准考证贵州,贵州计算机二级考试准考证打印时间
  5. mysql 笔试题_MySQL笔试题详解(一)(中等难度)
  6. 实录分享 | 计算未来轻沙龙:大规模数据存储与挖掘(PPT下载)
  7. Struts2 在页面定义变量 s:set标签
  8. 在类别无法直接使用的一些对象或方法
  9. CodeForces - 1328D Carousel(构造+贪心)
  10. 电力现货市场现货需求_现货与情绪:现货铜市场中的自然语言处理与情绪评分
  11. 大厂Android高级多套面试专题整理集合,大厂直通车!
  12. 打印服务器后台程序没有运行,打印后台程序服务没有运行
  13. Android WiFi 连接 (Connect,no Internet,带叉)
  14. 计算机专业毕业论文格式,2016年计算机专业毕业论文内容及格式要求
  15. adb指令禁用软件_Android免root禁用系统应用(adb停用安卓系统应用)
  16. 斗鱼连续6个季度亏损:活跃用户降幅明显,虎牙市值是前者的两倍
  17. html用字符转换成表情,HTML表情符号
  18. puppy linux u盘,Puppy Linux v4.0 下载 可安装在U盘上的操作系统
  19. Qt从入门到放弃——信号和槽机制(SigalSlot)
  20. 029_《编程高手箴言》

热门文章

  1. SpringBoot启动报错: Error creating bean with name ‘“XXXX‘ defined in class path resource
  2. “买菜”凶猛,入局“三”思
  3. 瀑布流效果实现vue3
  4. 推荐Coldplay酷玩乐队的Yellow~
  5. 设置阿里云镜像仓库 Docker下载镜像太慢的解决方案
  6. 互联网行业为什么能吸引越来越多的年轻人?尤其是程序员……
  7. oracle 增量备份 需要归档日志,oracle增量备份及应用
  8. matlab向量生成,Matlab向量的生成方法
  9. ROS学习08-NVIDIA JETSON TX2安装配置激光雷达-思岚RPLIDAR S1(在Rviz上显示点位图)
  10. 【30秒】去除360浏览器“网页走丢了/网页无法访问“页面的垃圾广告!----2021.03.09