2017-01-18 3 views
1

를 사용하여 섹션으로 파일을 분할하고 사전에 넣어 수 있습니다 이름을 키로 입력하십시오. 섹션의 수는 다양합니다. Robot Framework 키워드를 사용하여이 사전을 어떻게 얻을 수 있습니까?어떻게 내가 이렇게되면 파일이 로봇 프레임 워크

+1

가장 간단한 해결책은 python으로 키워드를 작성하는 것입니다. 그게 수용 가능한 해결책입니까, 아니면 기본 제공 키워드를 사용하여이 모든 작업을 수행해야합니까? –

+0

내장 키워드 만 사용해야합니다. 그러나 알고있는 것만으로도 파이썬 구현을 알고 싶습니다. – Arpitha

+0

내장 된 키워드로 원하는 것을 할 수있는 간단한 방법이 없습니다. 가능성은 높지만 코드가 많이 필요할 것입니다. 파일을 읽고, 줄로 나누고, 줄을 반복하고, 사전을 만들어야합니다. 서면으로,이 질문은 너무 광범위합니다. 문제를 직접 풀어보고보다 구체적인 질문이있을 때 다시 돌아와야합니다. –

답변

6

이것이 필요한가요?

*** Settings *** 
Library OperatingSystem 
Library String 
Library Collections 

*** Test Cases *** 
Split File By Names 
    ${my_dict} Create Dictionary 
    ${data} Get File <path_to_your_data> 
    @{lines} Split To Lines ${data} 
    Remove Values From List ${lines} ${EMPTY} 
    :FOR ${line} IN @{lines} 
    \ ${key} ${value} Split String ${line} : 
    \ ${name} Set Variable If '${key}' == 'Name' ${value.strip()} ${name} 
    \ Run Keyword If '${key}' == 'Name' Set To Dictionary ${my_dict} ${name}[email protected]{EMPTY} 
    \ Run Keyword If '${key}' <> 'Name' Append To List ${my_dict.${name}} ${line} 
    Log ${my_dict} 

어쨌든, 파일을 구문 분석하는 RF 방법은 싫증납니다. 차라리 파이썬으로 갈 것입니다.

#!/usr/bin/python 
# -*- coding: utf-8 -*- 


class ParseFile: 

    def __init__(self): 
     self.my_dict = {} 

    def parse_file_to_dict(self): 
     with open('<path_to_your_data>') as f: 
      lines = f.read().splitlines() 
      for line in (l for l in lines if l != ""): 
       key, value = line.split(":", 1) 
       if key == "Name": 
        name = value 
        self.my_dict[name] = [] 
       else: 
        self.my_dict[name].append(line) 
     return self.my_dict 

... 그런 다음 RF로 부르기 만하면됩니다.

*** Settings *** 
Library ParseFile.py 

*** Test Cases *** 
Do It In Python 
    ${my_dict} Parse File To Dict 
    Log ${my_dict} 

두 가지 방법 모두 사용자가 제공 한 데이터 구조에 엄격히 부합합니다. 나는. "이름"이 각 섹션의 첫 번째 줄에 있지 않으면 작동하지 않으므로 더 많은 데이터 처리가 필요합니다.

+0

적절한 출력을 가져 오기 위해 약간의 조정이 필요하며이 코드는 나를 위해 잘 작동합니다. 엄청 고마워! 나는이 라인에서 실패했기 때문에 루프를 잃고 추가하기 전에리스트를 잃어 버려야했다. \ Run 키워드 '$ {key}'<> '이름'추가 목록 $ {my_dict. $ {name}} $ {line} – Arpitha

+0

나는 그것이 좋기 때문에 기쁘다. 어쨌든 부정확하거나 불완전한 데이터의 경우 견고성을 높이는 것이 좋을 것입니다. 파이썬 솔루션이 훨씬 더 융통성이 있기 때문에 가치가있는 순간입니다. –

관련 문제