python 测试实现方法

时间:2023-03-24 11:34:04 

 1)doctest
使用doctest是一种类似于命令行尝试的方式,用法很简单,如下


def f(n):
"""
>>> f(1)
1
>>> f(2)
2
"""
print(n)

if __name__ == '__main__':
import doctest
doctest.testmod()


应该来说是足够简单了,另外还有一种方式doctest.testfile(filename),就是把命令行的方式放在文件里进行测试。

2)unittest
unittest历史悠久,最早可以追溯到上世纪七八十年代了,C++,Java里也都有类似的实现,Python里的实现很简单。
unittest在python里主要的实现方式是TestCase,TestSuite。用法还是例子起步。


from widget import Widget
import unittest
# 执行测试的类
class WidgetTestCase(unittest.TestCase):
def setUp(self):
self.widget = Widget()
def tearDown(self):
self.widget.dispose()
self.widget = None
def testSize(self):
self.assertEqual(self.widget.getSize(), (40, 40))
def testResize(self):
self.widget.resize(100, 100)
self.assertEqual(self.widget.getSize(), (100, 100))
# 测试
if __name__ == "__main__":
# 构造测试集
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase("testSize"))
suite.addTest(WidgetTestCase("testResize"))

# 执行测试
runner = unittest.TextTestRunner()
runner.run(suite)


简单的说,1>构造TestCase(测试用例),其中的setup和teardown负责预处理和善后工作。2>构造测试集,添加用例3>执行测试需要说明的是测试方法,在Python中有N多测试函数,主要的有:
TestCase.assert_(expr[, msg])
TestCase.failUnless(expr[, msg])
TestCase.assertTrue(expr[, msg])
TestCase.assertEqual(first, second[, msg])
TestCase.failUnlessEqual(first, second[, msg])
TestCase.assertNotEqual(first, second[, msg])
TestCase.failIfEqual(first, second[, msg])
TestCase.assertAlmostEqual(first, second[, places[, msg]])
TestCase.failUnlessAlmostEqual(first, second[, places[, msg]])
TestCase.assertNotAlmostEqual(first, second[, places[, msg]])
TestCase.failIfAlmostEqual(first, second[, places[, msg]])
TestCase.assertRaises(exception, callable, ...)
TestCase.failUnlessRaises(exception, callable, ...)
TestCase.failIf(expr[, msg])
TestCase.assertFalse(expr[, msg])
TestCase.fail([msg])

标签:python,测试
0
投稿

猜你喜欢

  • Python3.x和Python2.x的区别介绍

    2022-01-05 12:36:27
  • PDO::getAttribute讲解

    2023-06-06 02:58:22
  • 用ASP对网页进行限制性的访问

    2008-07-03 13:02:00
  • 1秒50万字!js实现关键词匹配

    2024-05-02 16:18:04
  • YOLOv5车牌识别实战教程(五)字符分割与识别

    2022-04-07 07:38:25
  • Python3多线程详解

    2022-01-03 07:12:41
  • python使用for循环和海龟绘图实现漂亮螺旋线

    2023-08-01 10:38:57
  • php连接不上mysql但mysql命令行操作正常的解决方法

    2023-11-18 20:02:43
  • eWebEditor_v280_Free_Final最好用的网页编辑器下载

    2022-05-26 22:30:24
  • Python机器学习应用之基于决策树算法的分类预测篇

    2021-10-28 20:53:14
  • 探秘TensorFlow 和 NumPy 的 Broadcasting 机制

    2023-07-22 06:09:50
  • MySQL的索引原理以及查询优化详解

    2024-01-13 14:04:38
  • 常用照片尺寸

    2009-03-06 12:56:00
  • vue中项目页面空白但不报错产生的原因及分析

    2024-05-03 15:12:17
  • Python中实现对Timestamp和Datetime及UTC时间之间的转换

    2023-06-25 07:58:25
  • 微信小程序封装多张图片上传api代码实例

    2024-04-25 13:13:31
  • 详细讲解如何为MySQL数据库添加新函数

    2008-11-27 17:06:00
  • Python二叉搜索树与双向链表转换实现方法

    2022-08-23 12:46:34
  • Flask和Django框架中自定义模型类的表名、父类相关问题分析

    2022-04-04 00:23:17
  • Python中常用的os操作汇总

    2022-12-13 08:30:16
  • asp之家 网络编程 m.aspxhome.com