Python学习笔记--命名规范-单元测试

# python命名规范
# 先来看变量命名。变量名请拒绝使用 a b c d 这样毫无意义的单字符,我们应该使用能够代表其意思的变量名。
# 一般来说,变量使用小写,通过下划线串联起来,
# 例如:data_format、input_spec、image_data_set。
# 唯一可以使用单字符的地方是迭代,比如 for i in range(n) 这种,为了精简可以使用。
# 如果是类的私有变量,请记得前面增加两个下划线。对于常量,最好的做法是全部大写,并通过下划线连接,
# 例如:WAIT_TIME、SERVER_ADDRESS、PORT_NUMBER。
# 对于函数名,同样也请使用小写的方式,通过下划线连接起来,
# 例如:launch_nuclear_missile()、check_input_validation()。
# 对于类名,则应该首字母大写,然后合并起来,例如:class SpatialDropout2D()、class FeatureSet()。


# 断言assert
# Python 的 assert 语句,可以说是一个 debug 的好工具,主要用于测试一个条件是否满足。
# 如果测试的条件满足,则什么也不做,相当于执行了 pass 语句;
# 如果测试条件不满足,便会抛出异常 AssertionError,并返回具体的错误信息(optional)。
# assert 1 == 2 or 1 == 1, "1不等于2"
# print("aaaa")

# 总结 :assert的使用应该是,有没有assert程序都能够正常运行,但有了assert可以使我们的代码后期维护更加方便


# 单元测试
# 首先,我们需要创建一个类TestSort,继承类‘unittest.TestCase’;
# 然后,在这个类中定义相应的测试函数 test_sort(),进行测试。
# 注意,测试函数要以‘test’开头,
# 而测试函数的内部,通常使用 assertEqual()、assertTrue()、assertFalse() 和 assertRaise() 等 assert 语句对结果进行验证。
# 最后只需要在主函数中执行unittest.main()即可

# import unittest
#
#
# # 将要被测试的排序函数
# def sort(arr):
#     l = len(arr)
#     for i in range(0, l):
#         for j in range(i + 1, l):
#             if arr[i] >= arr[j]:
#                 tmp = arr[i]
#                 arr[i] = arr[j]
#                 arr[j] = tmp
#
#
# # 编写子类继承unittest.TestCase
# class TestSort(unittest.TestCase):
#
#     # 以test开头的函数将会被测试
#     def test_sort(self):
#         arr = [3, 4, 1, 5, 6]
#         sort(arr)
#         # assert 结果跟我们期待的一样
#         self.assertEqual(arr, [1, 3, 4, 5, 6])
#
#
# if __name__ == '__main__':
#     # 如果在Jupyter下,请用如下方式运行单元测试
#     # unittest.main(argv=['first-arg-is-ignored'], exit=False)
#
#     # 如果是命令行下运行,则:
#     unittest.main()


# 用命令行运行时,想要调试,可以用pdb
# 常见命令行命令 p xxx =>print(xxx)
# n 表示继续执行一行
# l 表示列出当前代码行的上下共十一行代码(上下各五行)
import pdb
a = 1
b = 2
pdb.set_trace()
c = 3
print(a + b + c)

# 用cProfile进行性能分析
# 只需导入该模块,并且在最后运行cProfile.run()即可
# 或者在命令行中输入  python3 -m cProfile xxx.py

import cProfile
# def fib(n)
# def fib_seq(n):
cProfile.run('fib_seq(30)')

  

原文地址:https://www.cnblogs.com/jifeng0902/p/14880363.html