【问题标题】:How to compare two JSON responses on Robot Framework?如何比较 Robot Framework 上的两个 JSON 响应?
【发布时间】:2020-03-24 03:38:07
【问题描述】:

我正在尝试找到一个包含关键字的库来帮助我,但没有成功。

我现在正在做的是将每个 JSON 响应转换为字典,然后比较字典,但我讨厌它。

我试图找到类似的库并找到了这个 python 代码,但我不知道如何让这个函数对我有用。

def _verify_json_file(self, result, exp):
    '''
    Verifies if two json files are different
    '''      
    with open(exp) as json_data:
        data = re.sub(ID, ID_REP, json_data.read())
        expected = JSON.loads(data)   
    differences = jsondiff.diff(expected, result, syntax='explicit')

    if not differences :             
        return True
    if differences == expected or differences == result:
        raise AssertionError("ERROR! Jsons have different structure")
    return False

【问题讨论】:

  • 澄清你的问题。

标签: json robotframework


【解决方案1】:

方法#0

要使上述函数为您工作,您只需创建一个 python 文件并将您的函数放入该文件并将该文件保存在 PYTHONPATH 中,并在您的机器人代码中使用相同的方法,方法是在设置部分使用 Library 关键字调用它.我已经通过link 中提到的所有步骤详细回答了这个问题。

  1. 用上面的代码创建一个python文件(comparejsons.py)
  2. 将上述python文件保存在PYTHONPATH中
  3. 使用机器人文件设置部分下的库 comparejsons.py

方法#1

  1. 您应该创建一个使用以下库的自定义关键字,然后比较 2 个 json。

  2. 您可以使用“robotframework-jsonvalidator”module

下面的示例代码,

*** Settings ***
Library    JsonValidator
Library    OperatingSystem

*** Test Cases ***
Check Element
    ${json_example}=    OperatingSystem.Get File   ${CURDIR}${/}json_example.json
    Element should exist    ${json_example}    .author:contains("Evelyn Waugh")

方法#2

将 JSON 转换为字典后,您可以使用内置关键字,这里 values=True 是重要的。

Dictionaries Should Be Equal<<TAB>>dict1<<TAB>>dict2<<TAB>>values=True

【讨论】:

    猜你喜欢
    • 2017-02-22
    • 1970-01-01
    • 2017-11-08
    • 2019-12-21
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2019-12-19
    相关资源
    最近更新 更多