import json import yaml import itertools import os import zipfile # 读取模板json文件 with open('common/data.json', 'r') as f: template = json.load(f) # 读取测试数据yaml文件 with open('common/data.yml', 'r') as f: test_data = yaml.safe_load(f) # 对测试数据进行组合 combinations = [dict(zip(test_data.keys(), values)) for values in itertools.product(*test_data.values())] # 生成json文件 output_dir = 'output' if not os.path.exists(output_dir): os.makedirs(output_dir) if len(combinations) > 150: zip_file = zipfile.ZipFile(f'output/output.zip', 'w', zipfile.ZIP_DEFLATED) for i, data in enumerate(combinations): filename = f'output_{i}.json' with open(os.path.join(output_dir, filename), 'w') as f: # 使用模板数据覆盖组合后的数据 result = template.copy() result.update(data) json.dump(result, f, indent=4) print(f'Successfully generated {filename}.') # 将文件添加到zip文件中 zip_file.write(os.path.join(output_dir, filename), filename) os.remove(os.path.join(output_dir, filename)) zip_file.close() print('Successfully generated output.zip.') else: for i, data in enumerate(combinations): filename = f'output_{i}.json' with open(os.path.join(output_dir, filename), 'w') as f: # 使用模板数据覆盖组合后的数据 result = template.copy() result.update(data) json.dump(result, f, indent=4) print(f'Successfully generated {filename}.')
排列组合生成json
最新推荐文章于 2024-11-05 15:28:12 发布
该Python代码读取JSON模板文件和YAML测试数据文件,然后使用itertools.product生成所有可能的数据组合。这些组合被写入新的JSON文件,并在超过150个组合时压缩到一个ZIP文件中。每份JSON文件的内容是模板数据与测试数据的合并结果。
摘要由CSDN通过智能技术生成