2017-12-11 10 views
0

사전의 동일한 목록 항목이있는 파일에 저장된 json 데이터에 대한 웹 서비스 응답에서 사전의 각 목록 항목을 비교하는 방법.robotframework의 루프를 사용하여 사전 내부 목록의 각 요소를 비교하는 방법

*** Settings *** 
Library Collections 
Library OperatingSystem 
Library RequestsLibrary 

*** Test Cases *** 
TestCase1 
    # create a HTTP session to a server 
    Create Session country http://services.groupkt.com/country/get/all 
    ${response}= Get Request country/
    log list ${response.content} 
    ${data}= evaluate json.loads($response.content) json 
    ${RestResponse}= get from dictionary ${data} RestResponse 
    ${result}= get from dictionary ${RestResponse} result 
    : FOR ${result} in @{result} 
    \ log to console ${result} 
    # ${result} display each dictionary item in list 
    log to console \n..Read from file 
    ${file}  get file ${CURDIR}${/}/country.json 
    #country file is respose of http://services.groupkt.com/country/get/all 
    ${filedata}= evaluate json.loads($file) json 
    ${RestResponse}= get from dictionary ${filedata} RestResponse 
    ${resultfiles}= get from dictionary ${RestResponse} result 
    : FOR ${resultfile} in @{resultfiles} 
    \ log to console ${resultfile} 
# ${resultfile} display each dictionary item in list 

여기서 제 1 및 제 2 루프 나 각 항목 ${result}에서 유래하고있다 ${resultfile} 두 가지 루프에서 유래 비교할 각 사전 항목을 표시. 루프 오버 루프를 사용해야하지만 나에게도 명확하지 않습니다. 와 나는 또 다른 문제 ${resultfile}

+0

가장 쉬운 해결책은 파이썬에서 두 개의 json 객체를 비교할 수있는 키워드를 작성하는 것입니다. 그런 종류의 솔루션에 개방적입니까? –

+0

@ 브라이언 Robotframework에서 RF를 제한하고 싶다면 파이썬에서 맞춤 라이브러리 솔루션으로 괜찮습니다. – madhur

+0

질문에 대한 답변이 있으십니까? 그렇다면 관련 정보를 사용하여 답변을 작성할 수 있습니까? –

답변

0

내가 그래서 난 그냥 사용하는 사용자 정의 파이썬 라이브러리가 작동하도록 RobotFramework에서 해결책을 찾을 해달라고 사전 요소의 일부 유니 코드로오고 참조하십시오.

*** Settings *** 
Library Collections 
Library OperatingSystem 
Library RequestsLibrary 
Library compare.py 

TestCase1 
    # create a HTTP session to a server 
    Create Session country http://services.groupkt.com/country/get/all 
    ${response}= Get Request country/
    ${data}= evaluate json.loads($response.content) json 
    ${RestResponse}= get from dictionary ${data} RestResponse 
    ${results}= get from dictionary ${RestResponse} result 
    log ${results} 
    : FOR ${result} in @{results} 
    \ log ${result} 
    # ${result} display each dictionary item in list 
    log to console \n..Read from file 
    ${file}  get file ${CURDIR}${/}/country.json 
    #country file is respose of http://services.groupkt.com/country/get/all 
    ${filedata}= evaluate json.loads($file) json 
    ${RestResponse}= get from dictionary ${filedata} RestResponse 
    ${resultfiles}= get from dictionary ${RestResponse} result 
     log ${resultfiles} 
    : FOR ${resultfile} in @{resultfiles} 
    \ log ${resultfile} 
    ${ReverseUnicode} ChangeFromUnicode ${resultfiles} 
    log ${ReverseUnicode} 
    #compare display all dictionary element which is not matching 
    ${Compare} compareList ${ReverseUnicode} ${results} 
    log to console ${Compare} 


    here is Python library code #compare.py 
    import ast 
def ChangeFromUnicode(responselist): 
    Returnlist= [] 
    for listelement in responselist: 
     Ndictionary = {} 
     for element1, element2 in listelement.iteritems(): 
      Ndictionary[element1.encode("ascii",'ignore')] = element2.encode("ascii",'ignore') 
      Returnlist.append(Ndictionary) 
    return Returnlist 
def compareList(arg1,arg2): 
    list1 = ast.literal_eval(arg1) 
    list2 = ast.literal_eval(arg2) 
    list3 = [] 
    for i, j in zip(list1, list2): 
     if i != j: 
      list3.append(i)