2017-04-16 1 views
2

나는 2 개의 클래스를 갖는 파이썬 모듈을 가지고있다. 각 클래스에는 일련의 함수 또는 메소드가 정의되어 있습니다. 어떻게 ROBOT 프레임 워크의 클래스에서 특정 메소드를 호출 할 수 있습니까? 나는 아래의 방법을 시도하지만, 그 다음과 같은 오류를주는. 누군가가 나를 통해 문제를 파악하는 데 도움을 줄 수 있습니까? 파이썬 모듈과 로봇 파일은 같은 경로에 있습니다. 라이브러리 문을 CheckCode.employee WITH_NAME xyz로 변경하려고했습니다. 이것은 도움이되지 못했습니다. 감사.ROBOT 프레임 워크의 파이썬 모듈에서 특정 메소드 호출하기

ERRORS 
============== 

[ WARN ] Imported library '/homes/user/New/CheckCode.py' contains no keywords. 
============================================================================== 
CheckCode :: Checking small built in code          
============================================================================== 
Verify we can call a particular class from a Python Module in Robot | FAIL | 
No keyword with name 'my_code.employee.staff info' found. 
------------------------------------------------------------------------------ 
CheckCode :: Checking small built in code        | FAIL | 
1 critical test, 0 passed, 1 failed 
1 test total, 0 passed, 1 failed 
============================================================================== 


Python Module File output 
****************************** 

import re 
import collections 
import math 

class person(): 
    def __init__(self,first,last): 
     self.firstname = first 
     self.lastname = last 

    def emp_name(self): 
     return self.firstname + " " + self.lastname 

class employee(person): 
    def __init__(self,first,last,empId): 
     person.__init__(self,first,last) 
     self.staffId = empId 

    def staff_info(self): 
     return self.Name() + " " + self.staffId 

ROBOT FILE 
****************************** 

*** Settings *** 
Documentation Checking small built in code 
Library BuiltIn 
Library Collections 
Library CheckCode.py  WITH NAME my_code 

*** Test Cases *** 
Verify we can call a particular class from a Python Module in Robot 
    Log  Hello World 
    ${var} = my_code.employee.staff info  Maggi  Nestle  20000 


*** Keywords *** 
Init 
    Set Log Level DEBUG 

답변

4

로봇이 자동으로 하나 개를 제외하고, 라이브러리 파일에있는 클래스의 인스턴스를 생성하지 않습니다 : 이름이 .py 확장자없이 파일 이름과 일치하는 경우가 자동으로 클래스의 인스턴스를 생성합니다. 예를 들어 파일 CheckCode.pyCheckCode이라는 클래스가 정의 된 경우 로봇이 자동으로 인스턴스를 만들고 해당 인스턴스로 모든 메소드를 키워드로 표시합니다.

파일에 일부 클래스의 인스턴스를 만들려면이를 수행하는 키워드를 만들어야합니다. 예를 들어 :

# CheckCode.py 
class person() 
    ... 
... 
def create_person(first, last): 
    return person(first, last) 

당신은 다음과 같이 사용할 수 있습니다 :

*** Settings *** 
Library CheckCode.py 

*** Test Cases *** 
Example 
    ${person}= create person Maggi Nestle 
    Should be equal as strings ${person.emp_name()} Maggi Nestle 

또한 Call Method 키워드로 객체의 메소드를 호출 할 수 있습니다

${name}= Call method ${person} emp_name 
1

그것은 수도 당신 같은 소리 실제 경로를 사용하여 라이브러리를 가져오고 있어야합니다. 동적

*** Settings *** 
Library CheckCode.person firstname lastname 
Library CheckCode.employee firstname lastname someid 

또는 : 같은 모듈에서 두 개의 라이브러리를 가져 오려면, 당신은 같은 이름으로 가져와야합니다 같이 가져 오려면

Import Library CheckCode.person firstname lastname 
Import Library CheckCode.employee firstname lastname someid 

, 당신은 당신의 모듈을 얻을 필요 파이썬 경로. 도움을 받으려면 this section을 참조하십시오. 사용자 설명서의 Using physical path to library에서

:

이 방법의 한계는 파이썬 클래스로 구현 라이브러리가 클래스와 같은 이름을 가진 모듈에 있어야한다는 것입니다.

+0

답변 해 주셔서 감사합니다. PYTHONPATH 메서드를 좀 더 살펴보고 질문이 있으면 다시 돌아 오도록하겠습니다. – user2905950

+0

질문에 대답하려고했지만 Bryan의 답변을 살펴 보시기 바랍니다. 나는 코드가 어떻게 구성되어야하는지에 대한 그의 평가에 동의한다. – ombre42

관련 문제