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单元测试的主要内容,如果未能解决你的问题,请参考以下文章

单元测试 NPE,当我添加片段自定义转换时

单元测试不了解 XCTest 期望的异步 UI 代码?

四则运算单元测试

常用python日期日志获取内容循环的代码片段

单元测试很棒,但是

词频统计单元测试