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

Cypress中如何向JSON文件的数组追加新对象

实现方法

不要用「直接往文件末尾拼接字符串」的方式操作,会破坏JSON的数组结构,导致文件无法正常解析。正确的通用逻辑不管用什么编程语言都一致,共3步:

  • 读取demoJ.json的全量内容,把JSON格式的字符串解析为程序可操作的数组对象
  • 将测试生成的新用户凭证对象,追加到解析后的数组中
  • 把更新后的数组重新序列化为带缩进的合法JSON字符串,全量覆盖写入原文件

下面给两种测试场景最常用的语言实现,都是用语言内置模块,不需要额外安装第三方依赖:

Node.js 实现(适合前端/接口自动化测试场景)

const fs = require('fs/promises');
const path = require('path');

// 替换为你本地demoJ.json的实际存放路径
const USER_STORE_PATH = path.join(__dirname, 'demoJ.json');

async function addTestUser(newUserInfo) {
  // 读取解析现有用户数据
  const rawContent = await fs.readFile(USER_STORE_PATH, 'utf-8');
  const userArr = JSON.parse(rawContent);
  // 追加新用户
  userArr.push(newUserInfo);
  // 格式化写回,2空格缩进和现有文件格式保持一致
  await fs.writeFile(USER_STORE_PATH, JSON.stringify(userArr, null, 2), 'utf-8');
}

// 测试场景调用示例
const newTestUser = {
  name: "autoTest147",
  email: "autoTest147@mail.com",
  pass: "test_pass_123456"
};
addTestUser(newTestUser).catch(err => {
  console.error('写入测试用户失败:', err);
});

Python 实现(适合后端/自动化测试场景)

import json
import os

# 替换为你本地demoJ.json的实际存放路径
USER_STORE_PATH = os.path.join(os.path.dirname(__file__), "demoJ.json")

def add_test_user(new_user_info: dict):
    # 读取解析现有用户数据
    with open(USER_STORE_PATH, "r", encoding="utf-8") as f:
        user_arr = json.load(f)
    # 追加新用户
    user_arr.append(new_user_info)
    # 格式化写回,避免中文乱码,保持2空格缩进
    with open(USER_STORE_PATH, "w", encoding="utf-8") as f:
        json.dump(user_arr, f, ensure_ascii=False, indent=2)

# 测试场景调用示例
if __name__ == "__main__":
    new_test_user = {
        "name": "autoTest147",
        "email": "autoTest147@mail.com",
        "pass": "test_pass_123456"
    }
    add_test_user(new_test_user)

注意事项:

  • 如果你的测试用例是并发执行的,需要给文件读写操作加互斥锁,避免多进程同时写入导致文件内容损坏
  • 写入前可以给新用户对象加字段校验,避免漏写name/email/pass字段导致后续测试读取异常
  • 不要随意修改JSON序列化的缩进配置,否则文件会变成无换行的单行压缩格式,不方便手动排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:45:37