首页 > 解决方案 > 如何使用python将robotframework中的输出结果以dict格式写入csv?

问题描述

我有一个机器人框架代码,它有多个带有结果的测试用例。现在我需要使用 python 代码将这些结果以键值对的形式存储在 JSON 文件中。我该怎么做?

Python代码.py

def writeJson(data):
    with open("data_file.json", "w") as write_file:
       json.dump(data, write_file)


Robot Code.robot


  TC1
   ${output}=    TC1test
   ${dict1}=    Set Variable     ${output}
   ${value_cnt}=    Get Length    ${dict1}
   ${var}=    set variable    ${dict1}

   TC2
   ${output}=   TC2test
    ${dict3}=    set variable    ${output}
   ${cnt}=    Get Length    ${dict3}
   ${var}=    set variable    ${dict3}
         : FOR    ${item}    IN RANGE   0    ${cnt}
         \    ${var2}=    Set Variable     ${var['value']} 

   write data
   ${json} =      writeJson         ${var1}   \n  ${var2}

输出:datafile.json 只打印一个值

我需要帮助编码部分如何使用 python 或机器人框架代码来做到这一点。

我需要一些示例代码

标签: pythonjsonrobotframeworkkey-value

解决方案


首先,您甚至不需要使用 python 库来实现这一点。你可以运行类似的东西:

*** Settings ***
Library  Collections
Library  json
Library  OperatingSystem

*** Test Cases ***
Write data
   &{TESTS_DICT}=  Create Dictionary  FirstTestResults=PASS  SecondTestResult=FAIL
   ${JSON_CONTENT}=  json.dumps  ${TESTS_DICT}
   Create File  ${CURDIR}/data_file.json  content=${JSON_CONTENT}

如果要使用自己的 Python 源文件写入文件,可以执行以下操作:

Python代码.py:

import json

def writeJson(data):
    with open("data_file.json", "w") as write_file:
       json.dump(data, write_file)

主机器人:

*** Settings ***
Library  Pythoncode.py
Library  Collections

*** Test Cases ***
Write data
   &{TESTS_DICT}=  Create Dictionary  FirstTestResults=PASS  SecondTestResult=FAIL
   WriteJson         ${TESTS_DICT}

main.robot在任一示例中运行都会创建一个data_file.json包含两个键值对的 json 文件。输出:

{"FirstTestResults": "PASS", "SecondTestResult": "FAIL"}

推荐阅读