欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python-03-测试

程序员文章站 2022-03-30 12:01:08
无意中又看到一门python的课程,太高兴了,特发布地址分享给大家。 学习:写出高质量的代码 多伦多大学 网址: https://class.coursera.org/pr...

无意中又看到一门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. class mytest(unittest.testcase):
    4. #具体的测试用例,一定要以test开头
    5. def test_sum(self):
    6. self.assertequal(myclass.sum(1, 2), 2, 'test sum fail')
    7. if __name__ =='__main__':
    8. 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!!!”)")