无意中又看到一门Python的课程,太高兴了,特发布地址分享给大家。
多伦多大学
网址: https://class.coursera.org/programming2-001
测试是很重要的一个过程,人月神话里说测试要占1/3时间,的确是很有道理的。
从实际的项目来说,主要分为以下几大类:
1> 单体测试
测试各种函数是否符合内心所想, 一般为开发人员自己负责。
2> 接口测试
测试接口是否与设计一致。 一般为开发人员自己负责。
3> 流程测试
测试流程序列是否与设计一致,比如内部状态迁移,与外部的事件交互,等等。 一般为开发人员自己负责。
4> 集成测试
一般不依赖硬件环境的话,通常是脚本自动测试,依赖硬件交互的话,通常是人工测试。一般由专业测试人员负责。
对于Python来说,1)和2)可以通过以下两种方式来完成:
方法1:使用doctest
在模块的末尾加以下代码:
- if __name__ == ‘__main__‘:
- import doctest, mymodule
- doctest.testmod(mymodule)
方法2:使用unittest
- import unittest
- import myclass
- class mytest(unittest.TestCase):
- #具体的测试用例,一定要以test开头
- def test_sum(self):
- self.assertEqual(myclass.sum(1, 2), 2, ‘test sum fail‘)
- if __name__ ==‘__main__‘:
- unittest.main()
更详细介绍,请参考课程的第二周介绍。
当然,你也可以用python写个脚本,自动提取函数中的example,并生成unittest代码。
比如以下伪代码:
print("import unittest")
print("import 输入模块名")
获取模块的Class类列表
for classA in (Class类列表)
print("class classA(unittest.TestCase):")
for methodA in (classA‘method list)
print("def test_methodA(self):")
for exampleA in (methodA‘example list)
print("\self.assertEqual(classA.methodA(exampleA参数),exampleA返回值, “test classA.methodA atexampleAfail!!!”)")