python - 如何测试将 json 写入磁盘的 python 函数?
问题描述
我想知道为以下序列化 json 的短函数编写测试函数(使用 pytest 运行)的最佳方法是什么。
import json
import os
def my_function(folder):
my_dict = {"a": "A", "b": "B", "c": "C"}
with open(os.path.join(folder, 'my_json.json'), 'w') as f:
json.dump(my_dict, f)
我希望将测试编写为一个简单的函数(而不是作为从 unittest.TestCase 继承的类的方法)。
我目前的想法是
def test_my_function():
my_function(folder)
with open(os.path.join(folder, 'my_json.json'), 'r') as f:
my_dict = json.load(f)
assert my_dict == {"a": "A", "b": "B", "c": "C"}
我想知道是否有更优雅的方法可以在不接触磁盘的情况下进行测试?
解决方案
json.dump()
由包的维护者测试json
。
所以,我认为你不必自己测试它。
这是他们在不写入磁盘的情况下测试功能的方式:
sio = StringIO()
self.json.dump({}, sio)
self.assertEqual(sio.getvalue(), '{}')
推荐阅读
- webpack - “DevTools 无法解析 SourceMap:webpack://”和 monorepo lerna 包源映射重写
- exchange-basicauth - 我们如何模拟 10 月 13 日的基本身份验证更改?
- reactjs - 使 Material-ui 图标更粗
- scope - 了解给定代码中的变量范围
- rest - 如何在 CL_REST_HTTP_CLIENT 中使用 PATCH 方法?
- python - 使用许多重复项对列表进行改组的有效算法或方法?
- node.js - 用于 node-postgres 客户端的 Sinon 存根
- python - 在 SpanSelector 对象的 onselect 函数中使用非全局变量
- android - 在 Fragment,GoogleMap 中,只有在我重新启动应用程序后才会显示 setMyLocationEnabled (true) 按钮
- asp.net-mvc - 从 razor 视图访问 Properties 文件夹中的 Resources.resx 文件