How to load a json data file into a variable in robot framework?

后端 未结 5 1612
庸人自扰
庸人自扰 2021-01-02 18:16

I Am trying to load a json data file into a variable directly in Robot Framework. Can anyone please elaborate with an e.g. giving the exact syntax as to how to do it? Thanks

相关标签:
5条回答
  • 2021-01-02 18:44
    Thanks Vinay .. that helped now we can retrieve data from json file in robot framework as well
    
    *** Settings ***
    Library           HttpLibrary.HTTP
    Library           OperatingSystem
    
    *** Test Cases ***
    Login_to_SalesForce_Json
        ${jsonfile}    Get File    c:/pathtojason/Data/testsuite.json
        ${username}    Get Json Value    ${jsonfile}    /test_case1/username
        log    ${username}
    
    Below is the json file structure
    
    {
        "test_case1": 
            {
                "username":"User1",
                "password":"Pass1"
            }
        ,
        "test_case2":
            {
                "username1":"User2",
                "password1":"Pass2"
            }
    
    
    }
    

    Prerequiste is:pip install --trusted-host pypi.python.org robotframework-httplibrary

    0 讨论(0)
  • 2021-01-02 18:46

    There is a library available for this: HttpLibrary.HTTP

    ${json}= | Get file | example.json
    ${port}  | HttpLibrary.HTTP.Get Json Value | ${json} | /port
    log      | ${port}
    

    API Document is available here: http://peritus.github.io/robotframework-httplibrary/HttpLibrary.html

    0 讨论(0)
  • 2021-01-02 18:57

    A common use is passing the json data to another library like Http Library Requests. You could do:

    *** Settings ***
    Library        OperatingSystem
    Library        RequestsLibrary
    
    *** Test Cases ****
    Create User
             #...
       ${file_data}= 
        ...  Get Binary File    ${RESOURCES}${/}normal_user.json
             Post Request       example_session    /user    data=${file_data} 
             #...
    

    No direct python involved and no intermediary json object.

    0 讨论(0)
  • 2021-01-02 19:03

    One way would be to use the Get File keyword from the OperatingSystem library, and then use the built-in Evaluate keyword to convert it to a python object.

    For example, consider a file named example.json with the following contents:

    {
        "firstname": "Inigo",
        "lastname": "Montoya"
    }
    

    You can log the name with something like this:

    *** Settings ***
    | Library | OperatingSystem
    
    *** Test Cases ***
    | Example of how to load JSON
    | | # read the raw data
    | | ${json}= | Get file | example.json
    | | 
    | | # convert the data to a python object
    | | ${object}= | Evaluate | json.loads('''${json}''') | json
    | | 
    | | # log the data
    | | log | Hello, my name is ${object["firstname"]} ${object["lastname"]} | WARN
    

    Of course, you could also write your own library in python to create a keyword that does the same thing.

    0 讨论(0)
  • 2021-01-02 19:09

    I had similar issue and this work fine with me:
    ${json} Get Binary File ${json_path}nameOfJsonFile.json

    It works for me on API testing, to read .json and POST, like here

    *** Settings ***
    Library    Collections
    Library    ExtendedRequestsLibrary 
    Library    OperatingSystem
    *** Variables ***  
    ${uri}    https://blabla.com/service/
    ${json_path}    C:/home/user/project/src/json/
    *** Test Cases ***
    Name of Robot Test Case  
        Create Session    alias    ${uri}    
        &{headers}  Create Dictionary  Content-Type=application/json; charset=utf-8
        ${json}  Get Binary File  ${json_path}nameOfJsonFile.json
        ${resp}    Post Request    alias    data=${shiftB}    headers=${headers}
        Should Be Equal As Strings    ${resp.status_code}    200
    

    There are also cases when you will need to transform read binary file (in my case ${json} to a dictionary but first try this simple solution.

    0 讨论(0)
提交回复
热议问题