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)


posted @ 2019-12-28 15:39  千亿  阅读(17)  评论(0编辑  收藏  举报