debug技巧
-
print
-
assert #优雅点,效果同print
-
pdb.set_trace可以在怀疑有问题的地方设置断点开始单步执行,结合 “p 变量名” 查看变量值,“c”继续运行。 只是pdb会全局单步。
打断点,注意使用二分法快速定位问题所在
import logging #允许指定记录信息的级别,有debug,info,warning,error等几个级别
LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
logging.basicConfig(filename='my.log', level=logging.DEBUG, format=LOG_FORMAT) #可以设置输出到某个文件,日志等级、格式等
- 单元测试unit test
(分治的思想,对核心代码比如一个函数或类做一个单元测试,在继续开发变动的过程中,可以随时跑一下单元测试,保证代码的功能正确性)https://www.liaoxuefeng.com/wiki/1016959663602400/1017604210683936
import unittest #python内置的单元测试模块
class TestDict(unittest.TestCase):#继承单元测试基类TestCase
def test_init(self):
d = Dict(a=1, b='test')
self.assertEqual(d.a, 1)
self.assertEqual(d.b, 'test')
self.assertTrue(isinstance(d, dict))
def test_key(self):
d = Dict()
d['key'] = 'value'
self.assertEqual(d.key, 'value')
def test_attr(self):
#attr;attribution,属性即data
d = Dict()
d.key = 'value'
self.assertTrue('key' in d)
self.assertEqual(d['key'], 'value')
def test_keyerror(self):
d = Dict()
with self.assertRaises(KeyError):
value = d['empty']
def test_attrerror(self):
d = Dict()
with self.assertRaises(AttributeError):
value = d.empty