web-dev-qa-db-ja.com

jsonデータファイルをロボットフレームワークの変数にロードする方法は?

RobotFrameworkの変数にjsonデータファイルを直接ロードしようとしています。誰かが例えばで詳しく説明できますか?それを行う方法について正確な構文を与えますか?前もって感謝します :)

1つの方法は、 OperatingSystem ライブラリから Get File キーワードを使用し、次に組み込みの Evaluate キーワードを使用して変換することです。 pythonオブジェクト。

たとえば、次の内容のexample.jsonという名前のファイルについて考えてみます。

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

次のような名前で名前をログに記録できます。

*** 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

もちろん、pythonに独自のライブラリを記述して、同じことを行うキーワードを作成することもできます。

15
Bryan Oakley

これに利用できるライブラリがあります:HttpLibrary.HTTP

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

APIドキュメントはこちらから入手できます: http://peritus.github.io/robotframework-httplibrary/HttpLibrary.html

3

一般的な使用法は、jsonデータを Http Library Requests のような別のライブラリに渡すことです。あなたができること:

*** 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} 
         #...

直接のpythonは関与せず、中間のjsonオブジェクトもありません。

1
José Andias
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"
        }


}

前提条件は次のとおりです。pipinstall--trusted-Hostpypi.python.orgrobotframework-httplibrary

0
MD5

私も同様の問題を抱えていましたが、これは問題なく機能します。
$ {json} バイナリファイルを取得 $ {json_path} nameOfJsonFile.json

ここのように、.jsonとPOSTを読むことは、APIテストで私のために働きます

*** 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

読み取ったバイナリファイル(私の場合は$ {json}を辞書に変換する必要がある場合もありますが、最初にこの単純なソリューションを試してください。

0
idomoni