Как получить обязательный параметр из JSON ответа RobotFramework - PullRequest
0 голосов
/ 24 февраля 2020

В рамках проверки в Robot Framework у меня есть следующие данные (хранятся как $ {response}) в качестве ответа на запрос get:

        {
            "interfaces": [
                {
                    "name": "eth0",
                    "status": "ready",
                    "macAddress": "xx:xx:xx:xx:xx:xx",
                    "ipv4": {
                        "mode": "DHCP",
                        "address": "127.0.0.1",
                        "mask": "255.255.255.0",
                    },
                    "ipv6": {
                        "mode": "DISABLED",
                        "addresses": [],
                        "gateway": "",
                    }
                }
            ],
            "result": 0
        }


        And I would like to get value of key ipv4 and store in variable 
        3 library is requestlibrary collection httplibrary.http
        is there anykeyword to save this value ? please help me

Ответы [ 3 ]

1 голос
/ 24 февраля 2020

Полученный вами ответ представляет собой строку, преобразуйте ее в dict с помощью стандартной json библиотеки python:

${as dict}=    Evaluate    json.loads("""${response}""")    json

И теперь вы можете работать с ней как с обычным словарем в Robot Framework:

${ipv4}=     Set Variable    ${as dict['interfaces'][0]['ipv4']}
1 голос
/ 25 февраля 2020

Вы можете использовать библиотеку запросов для доступа к этому:

Create Session  server  http://mywebsite.com #You the ROOT URL here 
${response}=  Get Request  server  #You put the URI here
${var_dict}=    Evaluate     json.loads("""${response.content}""")    json
${ipv4}=    Set Variable    ${var_dict}[interfaces][ipv4]

Это сохранит все ключи из ipv4 в переменной ${ipv4}

1 голос
/ 24 февраля 2020

Вы можете получить и сохранить значение с помощью указанного кода:

def get_activation_code():
    print(dict["data"]["user"]["activationCode"])
    return dict["data"]["user"]["activationCode"]

Если вы предоставите больше информации о задаче «отправка в другой API», я бы тоже мог вам помочь, но этот метод предоставит activationCode. dict относится к данному словарю, который вы получаете как ответ, как вы говорите.

Когда вы уже получили ответ откуда-то, я думаю, вы уже импортировали библиотеку requests -?

Способ отправки чего-либо в другой API будет через post -команду:

r = requests.post(url = the_url_of_the_target_api, data = get_activation_code())  

. Затем вы можете получить ответ с помощью:

response = r.text
print(response) 
...