zoukankan      html  css  js  c++  java
  • python单元测试

    1、代码调试
    • print 输出调试

    • debug 打断点一行一行运行

    • assert 断言

      def div(a, b):
          assert b != 0, "b的值为0"
          #满足条件 继续执行
          #不满足条件 报错断言错误 输出错误描述提示
          return a / b
      #res = div(1,10)
      res = div(1,10)
      print(res)
      
    • logging

    • pdb 可以调试代码 一行一行的执行

      	如果想使用pdb进行调试 需要提前启动pdb
      	在Terminal上输入指令:
      		python -m pdb 被调试的python文件
      	
      		输入n 一行一行执行代码
      		输入p 变量名 可以查看变量的值
      		输入q结束调试
      
    2、文档测试
    #文档测试 测试的是注释
    
    #导入doctest
    import doctest
    def hello(s1):
    #输入3个'''回车就会出现
    '''
    	:param s1 :接受一个参数
    	:return 返回这个参数 
    	注意三个箭头后必须有一个空格
    	Example:
    	>>> print(hello('jack'))
    	jack
    '''
    	return s1
    
    #执行文档
    docker.testmod()
    
    
    3、单元测试

    单元测试: 对一个函数/类/模块进行正确的校验
    单元测试 – 测试功能是否能通过

    import unittest
    from func import binary_search
    
    class test_binary_search(unittest.TestCase):
    	#校验开始
    	def setUp(self):
            print('setUp...')
        #校验结束
        def tearDown(self):
            print('tearDown...')
    	
    	#测试我们的函数、类,函数名要以text_xxx开头
    	def test_binary_sch(self):        
    		a=binary_search([1,2,3,4,5,6],3)        
    		self.assertEqual(a,2)
    		#另一种常用的断言方法
    		#with self.assertRaises(KeyError):
    			#value = d['empty']
    			#是期待抛出指定类型的Error
    if __name__ == '__main__':    
    	unittest.main()
    python -m unittest my_test(Py文件名)	
    #这是推荐的做法,因为这样可以一次批量运行很多单元测试,并且,有很多工具可以自动来运行这些单元测试。
    
    setUp与tearDown可以在单元测试中编写两个特殊的setUp()和tearDown()方法。这两个方法会分别在每调用一个测试方法的前后分别被执行。setUp()和tearDown()方法有什么用呢?设想你的测试需要启动一个数据库,这时,就可以在setUp()方法中连接数据库,在tearDown()方法中关闭数据库,这样,不必在每个测试方法中重复相同的代码。
    

    4、反射机制:通过字符串来操作对象/类/模块中的属性,方法

    data = input("请输入要执行的方法名:")
    res = hasattr(对象/类/模块名, data)  
    print(res)    # True/False
    if res:
    	f = getattr(对象/类/模块名, data)
    	print(f)    #函数/属性值
     #setattr 设置变量的值 
     	setattr('对象/类/函数名',num,100)
    
    
    
  • 相关阅读:
    关于左边图片右边列表的新闻布局模式
    Yahoo!团队实践分享:网站性能优化的34条黄金守则(三)—JavaScript和CSS
    Yahoo!团队实践分享:网站性能优化的34条黄金守则(二)—服务器
    浅谈HTTP中Get与Post的区别
    司徒大人的面试题,自勉~
    善待PSD — 好设计师,从细节做起
    Yahoo!团队实践分享:网站性能优化的34条黄金守则(一)—内容
    恕我简陋,恕我臃肿
    【svg+vml】部分尝试
    记录:关于Drag&Drop Upload
  • 原文地址:https://www.cnblogs.com/-min/p/12833241.html
Copyright © 2011-2022 走看看