Python-03-测试

无意中又看到一门Python的课程,太高兴了,特发布地址分享给大家。


学习编程:写出高质量的代码

多伦多大学

网址:  https://class.coursera.org/programming2-001


测试是很重要的一个过程,人月神话里说测试要占1/3时间,的确是很有道理的。


从实际的项目来说,主要分为以下几大类:

1> 单体测试

测试各种函数是否符合内心所想, 一般为开发人员自己负责。


2> 接口测试

测试接口是否与设计一致。 一般为开发人员自己负责。


3> 流程测试

测试流程序列是否与设计一致,比如内部状态迁移,与外部的事件交互,等等。 一般为开发人员自己负责。


4> 集成测试

一般不依赖硬件环境的话,通常是脚本自动测试,依赖硬件交互的话,通常是人工测试。一般由专业测试人员负责。


对于Python来说,1)和2)可以通过以下两种方式来完成:

方法1:使用doctest

在模块的末尾加以下代码:

  1. if __name__ == '__main__'
  2.     import doctest, mymodule
  3.     doctest.testmod(mymodule

方法2:使用unittest

  1. import unittest  
  2. import myclass
  3.   
  4. class mytest(unittest.TestCase):  
  5.       
  6.     #具体的测试用例,一定要以test开头  
  7.     def test_sum(self):  
  8.         self.assertEqual(myclass.sum(12), 2'test sum fail')  
  9.           
  10. if __name__ =='__main__':  
  11.     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!!!”)")

你可能感兴趣的:(Python-03-测试)