如何编写Python脚本在Robot Framework中调用json2csv并传参?
我来帮你梳理下怎么在Robot Framework里调用json2csv的功能,其实核心就是写一个简单的Python封装层,把Robot的参数传递过去就行,具体步骤如下:
第一步:编写Python封装脚本
先创建一个Python文件(比如命名为JsonToCsvConverter.py),里面写一个封装函数,负责接收Robot传来的参数,调用json2csv的转换逻辑,同时处理一些常见的输入场景(比如JSON文件路径或JSON字符串):
from json2csv import convert import json def convert_json_to_csv(json_input, output_csv_path, fields=None, delimiter=","): """ 将JSON数据转换为CSV文件,供Robot Framework调用 :param json_input: 支持两种输入:JSON文件路径(如"data/input.json"),或JSON格式字符串 :param output_csv_path: 输出CSV文件的保存路径 :param fields: 可选参数,指定要导出的字段列表(如["name", "age", "email"]),不填则导出所有字段 :param delimiter: 可选参数,CSV的字段分隔符,默认是逗号 """ try: # 区分输入是JSON文件还是字符串 if isinstance(json_input, str) and json_input.endswith(".json"): # 从文件读取JSON数据 with open(json_input, "r", encoding="utf-8") as json_file: json_data = json.load(json_file) else: # 直接解析JSON字符串 json_data = json.loads(json_input) # 调用json2csv的核心转换方法 convert( input_data=json_data, output_path=output_csv_path, fields=fields, delimiter=delimiter ) return f"转换成功!CSV文件已保存至:{output_csv_path}" except Exception as e: # 抛出异常,让Robot Framework捕获并处理 raise Exception(f"JSON转CSV失败:{str(e)}")
第二步:在Robot Framework中调用封装函数
接下来在你的Robot测试套件里,导入刚才写的Python文件,然后就可以像调用普通Robot关键字一样使用这个函数了:
*** Settings *** Library JsonToCsvConverter.py # 如果文件不在当前目录,要写相对/绝对路径,比如"../libs/JsonToCsvConverter.py" *** Test Cases *** 场景1:转换本地JSON文件到CSV ${conversion_result} Convert Json To Csv json_input=test_data/user_info.json output_csv_path=output/user_report.csv fields=["username", "email", "join_date"] Log ${conversion_result} 场景2:直接转换JSON字符串到CSV ${sample_json_str} Set Variable [{"product":"Laptop","price":999},{"product":"Phone","price":599}] ${conversion_result} Convert Json To Csv json_input=${sample_json_str} output_csv_path=output/product_list.csv delimiter=";" Log ${conversion_result} 场景3:处理转换失败的情况(可选) Run Keyword And Expect Error *转换失败* Convert Json To Csv json_input=invalid_json.txt output_csv_path=output/fail_test.csv Log 已捕获预期的转换错误
一些注意事项
- 确保你已经正确安装了json2csv包:
pip install json2csv(你提到已经装了,这里再确认下版本匹配问题) - 如果json2csv的API有更新(比如
convert函数的参数名变化),记得同步调整封装脚本里的调用逻辑 - Robot里的路径尽量用相对路径,避免硬编码绝对路径,保证测试的可移植性
- 封装函数里的异常处理可以根据你的需求扩展,比如增加日志记录等
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

