首页 > 解决方案 > 如何测试将 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"}

我想知道是否有更优雅的方法可以在不接触磁盘的情况下进行测试?

标签: pythonunit-testingtestingpytest

解决方案


json.dump()由包的维护者测试json

所以,我认为你不必自己测试它。

这是他们在不写入磁盘的情况下测试功能的方式:

        sio = StringIO()
        self.json.dump({}, sio)
        self.assertEqual(sio.getvalue(), '{}')

推荐阅读