You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pytest导入包含null的JSON数据时报null未定义该如何处理?

问题原因

报错的核心原因是你把JSON语法直接写在了Python代码文件data.py中,存在两处语法不兼容:

  • Python字典的键值对使用冒号:分隔,你写的"company" = "XYZ"里的等号不符合Python字典语法
  • null是JSON的空值标识,Python中对应的空值关键字为None,Python解析器识别不到null因此抛出NameError。
解决方案

方案1:直接修改data.py为合法Python代码(最便捷)

把data.py中的代码替换为合法的Python字典定义即可,修改后内容:

data_1 = {"company": "XYZ", "Name": None, "Number": None}

修改后from .data import data_1可直接正常执行,且data_1的结构和取值与func_1返回的结果完全匹配,可直接用于断言。

方案2:在Python文件中保留JSON格式内容

如果你需要保留原有的JSON格式写法不直接替换null,可以把JSON内容存为字符串后通过json模块加载,data.py修改为:

import json
# 注意JSON语法中键值对用冒号分隔,先修正"company"后的等号
data_1_raw = '''{"company": "XYZ", "Name": null, "Number": null}'''
# json.loads会自动将JSON的null转换为Python的None
data_1 = json.loads(data_1_raw)

方案3:独立为JSON配置文件(更规范)

如果测试数据本身是通用的JSON配置,建议单独存为data.json文件,不要写入Python代码文件中:

  1. 新建data.json文件,内容如下:
{"company": "XYZ", "Name": null, "Number": null}
  1. 修改测试用例代码,直接读取JSON文件即可:
import pytest
import json
from pathlib import Path

def test_1():
    input_ = X
    result = func_1(input_)
    # 读取同目录下的data.json文件
    data_path = Path(__file__).parent / "data.json"
    with open(data_path, "r", encoding="utf-8") as f:
        output = json.load(f)
    assert result == output

内容的提问来源于stack exchange,提问作者Sourabh Mittal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 12:48:04