python-3.x - 在python中对没有返回值的函数进行单元测试
问题描述
我有一个函数应该只从请求列表中选择前 10 个请求:
def prioritize_top_10_requests(list_of_requests):
if not list_of_requests:
system.exit(1)
else:
for i in list_of_requests[0:10]:
print i
我想为这个函数编写一个单元测试,只是为了检查“i”是否被打印了 10 次,尽管我们有更多的请求列表。
我是第一次编写 python 单元测试用例。
解决方案
我没有设置python3。以下代码适用于 Python 3。
它的作用如下。
- 使用一个测试“test_priority”创建了一个 UnitTest 测试用例。
- 在测试中,将标准输出重定向到一个字符串。
- 然后执行函数。
- 从字符串中收集打印结果。
- 删除 None 和空字符串并找到长度。
- 检查它是否等于 10。
import unittest
from io import StringIO
import sys
def prioritize_top_10_requests(list_of_requests):
for i in list_of_requests[0:10]:
print(i)
class TestMyCode(unittest.TestCase):
def test_priority(self):
sys.stdout = result = StringIO()
prioritize_top_10_requests(range(100))
sys.stdout = sys.__stdout__
printed_lines = result.getvalue()
print_count = len(printed_lines.strip().split('\n'))
self.assertEqual(print_count, 10)
if __name__ == '__main__':
unittest.main()
推荐阅读
- reactjs - 反应验证输入
- ajax - Laravel 的 Ajax Post 请求中缺少参数
- java - 线程启动后,HttpServletRequest 对象将被覆盖
- python - 替换 PySpark 中的字符串
- python - 基于多个分隔符剥离列数据
- javascript - 如何在导出之外访问组件数据
- reactjs - 在 Chrome 问题中通过 React 代码进行单步调试
- asp.net - 未在编辑模式下为 Gridview CheckboxList 设置值
- php - App Engine PHP72 标准环境,在本地环境中访问 env_variables
- c - 重新分配一维整数数组,保持原始值,将剩余部分归零