2017-11-15 3 views
0

JSONファイルから相対パスとマッピングテストデータを使用しているときに、ほとんど問題に直面しています。私はJSON形式でJSON POSTリクエストとテストデータファイルを持っています。相対パスの使用中に問題が発生し、jsonファイルから要求へのテストデータのマッピング

これは私が使用しているテストデータです。

{ 
    "name": "Test Data", 
    "description": "Information's mainly related with Users", 
    "testData": [ 
    { 
     "Scenario1": { 
     "givenName": "Joseph", 
     "familyName": "George", 
     "addressType": "Current", 
     "lineOne": "BNRA-222, Kowdiar lane", 
     "cityName": "Trivandrum", 
     "countryID": "India", 
     "postcode": "695006" 
     } 
    }, 
    { 
     "Scenario2": { 
     "givenName": "Sreenath", 
     "familyName": "Bhasi", 
     "addressType": "Current", 
     "lineOne": "HSE-123, Karyavatom", 
     "cityName": "Trivandrum", 
     "countryID": "India", 
     "postcode": "695552" 
     } 
    } 
    ] 
} 

これは、機能ファイル

Feature: Test using the Data from a JSON file 

    Background: 
    * def baseJsonRequest = read('../requests/jsonrequest.json') 
    * def baseData = read('../data/sampledata.json') 
    * def endPointURL = endPointURI + path 

    Scenario: A sample scenario to test the data parametrization 

    Given url endPointURL 
    And request baseJsonRequest 
    * set baseJsonRequest.autoRequest.applicants.applicant.specifiedPerson.givenName = baseData.testData[*].Scenario1.givenName 
    * set baseJsonRequest.autoRequest.applicants.applicant.specifiedPerson.familyName = baseData.testData[*].Scenario1.familyName 
    * set baseJsonRequest.autoRequest.applicants.applicant.specifiedPerson.residenceAddress.addressType = baseData.testData[*].Scenario1.addressType 
    * set baseJsonRequest.autoRequest.applicants.applicant.specifiedPerson.residenceAddress.lineOne = baseData.testData[*].Scenario1.lineOne 
    * set baseJsonRequest.autoRequest.applicants.applicant.specifiedPerson.residenceAddress.cityName = baseData.testData[*].Scenario1.cityName 
    * set baseJsonRequest.autoRequest.applicants.applicant.specifiedPerson.residenceAddress.countryID = baseData.testData[*].Scenario1.countryID 
    * set baseJsonRequest.autoRequest.applicants.applicant.specifiedPerson.residenceAddress.postcode = baseData.testData[*].Scenario1.postcode 

である私の質問は以下のとおりです。

  1. 私は両側に相対パスを与えることができないのです。相対パスは私にjson配列を返しています。例えば、$ .. Scenario1.givenNameを使用することはできません。これにより、より長いパスを書くことができます。
  2. このシナリオをすべてのシナリオに含めることは事実上困難です。どのようにパラメータ化されたソリューションを実装できますか?何が良い方法でしょうか?フィーチャファイルを使用してデータの読み込みを呼び出し、その情報を別のフィーチャに渡すことはできますか。それが可能ならば、私はパラメータ化する必要があります。どうやってするか?
  3. JSONファイルを読み込むためにJavaクラスを使用する必要がありますか?

答えて

1

はい、JsonPathでワイルドカードを使用すると、配列が返されます。とにかく、すぐにここに助けるべき2点:

  • あなたは、変数
に割り当てることで、JSONのネストされたチャンクを参照することができ卓上 set
  • にネストされたパスを繰り返して移動することができます

    だから、これは行く方法でなければなりません:

    * def first = get[0] baseData.testData[*].Scenario1 
    * set baseJsonRequest.autoRequest.applicants.applicant.specifiedPerson 
        | path       | value    | 
        | familyName     | first.familyName | 
        | residenceAddress.addressType | first.addressType | 
    

    私は例えばのために、可能な限り、ワイルドカードを使用しないようにしようとするだろう

    * def first = $baseData.testData[0].Scenario1 
    

    これが役に立ちます。

  • +1

    私は、この問題をこの – Sree

    +0

    で解決することができました.Ya、私はTrivandrumに基づいています – Sree

    +1

    私は知っています。あなたのLinkedInプロフィールを見ました。 – Sree

    関連する問題