2016-12-03 11 views
1

로봇 프레임 워크에 키워드가 있습니다. 그것은 인수를 취 거기에 몇 가지 과정을 수행하고 결국 그것을 반환로봇 프레임 워크 키워드를 참조하여 인수를 전달하는 방법은 무엇입니까?

My Keyword Name 
    [Arguments] ${arg} 
    # Some process on ${arg} 
    [Return]  ${arg} 

을 그래서 사용 될 것이다 :

${x} = My Keyword Name ${x} 

나는 키워드에 ${x}의 이전 값을 준 것을 의미한다 그리고 그것은 그것의 새로운 가치를 나에게 돌려 줬다.

My Keyword Name에 대한 참조로 전화를 걸고 자하므로 ${x}에 새 값을 지정하기 위해 할당을 사용할 필요가 없습니다. BuiltInUserGuide, 을 읽었지만이 주제에 관한 행이 없습니다. 아무도 이것에 나를 도울 수 있습니까?

답변

3

${x}이 목록 또는 사전과 같은 변경 가능한 유형 인 경우 객체 자체를 전달할 수 있습니다. 문자열이나 int와 같은 스칼라 값을 나타내면 원하는 것을 수행 할 수 없습니다. 유일한 선택은 새 값을 반환하고 원래 값으로 다시 할당하는 것입니다.

+0

나는 당신이 옳다고 생각합니다. 나는 많은 것을 탐험했고 아무 것도 발견하지 못했습니다. –

+0

@ZeinabAbbasimazar Python의 변경 가능한 유형은 실제로 키워드로 바꿀 수 있습니다. 아래에서 내 대답을 확인하십시오. – Todor

0

당신은 당신이 의 사용이 변수 또는 설정 테스트 변수 글로벌 설정 할 수 있는지 여부를 조사 할 수

My Keyword Name 
    [Arguments] ${arg} 
    ${arg} = Set Variable 56 
    [Return]  ${arg} 

Test 
    Log To Console \n\nin Test 
    ${x} = Set Variable 0 
    ${x} = My Keyword Name ${x} 
    Log To Console ${x} 

또는

등의 변수를 초기화하는 경우가 작동합니까?

+0

입력하신 코드는 제 코드와 동일합니다. BTW, 전 세계화하고 싶지 않습니다. 변수의 중복 사용을 없애고 싶습니다. –

-1

Welp For 루프에서 키워드 실행 If 문을 사용할 때와 같은 문제가 발생했습니다. 값을 반환하는 키워드를 사용하면 로봇 프레임 워크가 이상하다는 것을 알았습니다.

그래서 나는 이것을 잠재적 인 해결책으로 생각했습니다. 제 예제를 사용합니다. 중복성이 있지만,이 경우에만해야하기 때문입니다.

***Keywords*** 
| Increment | [Arguments] | ${var} | 
| | ${var} | Evaluate | ${var} + 1 | 
| | Set Test Variable | ${var} | ${var} | 

사용법 : 이제

| Increment | ${idx} | 
| Set Test Variable | ${idx} | ${var} 

내가이 최고의 솔루션입니다 말하는 게 아니에요하지만 당신은 당신이 키워드로 변수에 값을 반환해야하는 시나리오가 발생하는 경우와 당신은 "키워드 실행"내부에있어,이 문제를 피할 수 있어야합니다. 나는 그다지 그다지 좋아하지 않지만 일을 끝내게된다.

0

나는 해결책을 찾기 전에 시간을 보냈다.

* Variables 
${someVar} initial value 

* Test Cases 
[Check reference] 
    Set this   \${someVar} new value 
    Should Be Equal ${someVar} new value 

* Keywords 
Set this 
[Arguments]   ${varName} ${value} 
Set Test Variable ${varName} ${value} 

포인트는 문자 :

1

그것은 실제로 파이썬에서 변경 가능/불가능한 변수로 내려오고, 그들이 함수에 전달하는 방법 "\"마법입니다.

여기에서 자세한 내용은 in this answer입니다. 그러나 RF 컨텍스트에서는 다음과 같이 요약 할 수 있습니다. - 문자열과 숫자가 아닌 목록과 사전을 변경할 수 있습니다 (int, float).예 :

A testcase 
    Log To Console  \n 
    ${var}=  Create List member1 
    Log To Console  ${var} 

    Mutate The List  ${var} 
    Log To Console  ${var} 

*** Keywords *** 
Mutate The List 
    [Arguments]  ${lst} 
    Append To List  ${lst} new one 

출력 할 때 실행 것이다 :

============================================================================== 
A testcase                

['member1'] 
['member1', 'new one'] 
| PASS | 

예컨대 케이스에 정의 된 변수가 키워드에 의해 변경되었습니다. 사전은 사전을 사용하여 수행 할 수 있습니다.

변수를 함수에 다시 할당해도 변수는 변경되지 않습니다. 예 : 이런 키워드 :

Mutate The Dict 
    [Arguments]  ${lst} 
    ${lst}=  Create List fsf 
    Append To List  ${lst} bogus 

, 원래의 변수 ${var}은 변경되지 않습니다.
왜 그렇습니까? 즉, 파이썬 변수는 메모리 주소에 대한 식별자 ("이름")입니다. ${lst}을 새 목록에 할당하면 변수가 메모리의 새 주소를 가리키고 이후의 상호 작용이 원래 주소를 변경하지 않습니다.