3-7 Python单元测试
Posted WinvenChang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3-7 Python单元测试相关的知识,希望对你有一定的参考价值。
一、什么是单元测试
Unit Testing
1.针对程序模块进行正确性检验
2.一个函数,一个类进行验证
3.自底向上保证程序正确性
二、为什么要写单元测试
三无代码不可取(无文档、无注释、无单测)
1.保证代码逻辑的正确性(甚至有些采用测试驱动开发(TDD
))
2.单测影响设计,易测的代码往往是高内聚低耦合的
3.回归测试,防止改一处整个服务不可用
三、单元测试相关的库
单元测试相关库
1.nose
/pytest
较为常用
2.mock
模块用来模拟替换网络请求等
3.coverage
统计测试覆盖率
代码示例:
def binary_search(array, target): # 二分查找
if not array:
return -1
beg, end = 0, len(array)
while beg < end:
mid = beg + (end - beg) // 2
if array[mid] == target:
return mid
elif array[mid] > target:
end = mid
else:
beg = mid + 1
return -1
def test():
"""
如何设计测试用例:(等价类划分)
- 正常值功能测试
- 边界值(比如最大最小,最左最右值)
- 异常值(比如 None, 空值, 非法值)
"""
# 正常值,包含有和无两种结果
assert binary_search([0, 1, 2, 3, 4, 5], 1) == 1
assert binary_search([0, 1, 2, 3, 4, 5], 6) == -1
assert binary_search([0, 1, 2, 3, 4, 5], -1) == -1
# 边界值
assert binary_search([0, 1, 2, 3, 4, 5], 0) == 0
assert binary_search([0, 1, 2, 3, 4, 5], 5) == 5
assert binary_search([0], 0) == 0
# 异常值
assert binary_search([], 1) == -1
注意:要运行以上测试代码,需要先安装pytest
pip install pytest
然后运行文件binarysearch.py
pytest binarysearch.py
pytest
会自动运行以test
开头的函数并运行测试用例
运行结果:
以上是关于3-7 Python单元测试的主要内容,如果未能解决你的问题,请参考以下文章