2017-10-09 69 views
0

调用Python函数我有一个Python类文件Myclass.py无法从robotframework

class Myclass(object): 
    def __init__(self,age,marks,city): 
     self.age=age 
     self.marks=marks 
     self.city=city 


    def sample_func(self ,arg1): 
     self.arg1=arg1 
     return self.age,self.marks,self.city 

我sample.robot文件是:

*** Settings *** 
Library  Myclass.py ${age} ${marks} ${city} 

*** Variables *** 
${arg1} pankaj 
${arg2} Mishra 
${age} 35 
${marks} 26 
${city} noida 

*** Test Cases *** 
Test 
    Test_MakeMyClass ${arg1} ${arg2} 

*** Keywords *** 
Test_MakeMyClass 
    [Arguments] ${arg1} ${arg2} 
    #Below command is working 
    #${result} = Myclass.sample_func ${arg1} 

    #$This one is throwing error 
    ${result} =  Call Method  Myclass.sample_func ${arg1} ${arg2} 
    [Return]  ${result} 

然而,当我运行该机器人的文件,它给错误:

Object 'sample_func' does not have method 'pankaj' 

我在这里做什么错?

+0

你为什么要创建一个关键字,使图书馆的新实例?这不是机器人库的工作原理。 –

+0

@Bryan Oakley,我已编辑我的代码现在..不能明白现在的问题是什么 –

+0

上面的代码不会给出错误'对象'sample_func'没有方法'pankaj'就像你声称它那样。请确保您发布的代码是提供您所说错误的实际代码。 –

回答

0

的错误消息指出:

Keyword 'MakeMyClass' expected 2 arguments, got 0. 

MakeMyClass在测试的测试用例关键字是不带参数调用。

追加2个参数后MakeMyClass(记住MakeMyClass后分离器和参数 - 至少2个空格)在测试的测试用例:

*** Test Cases *** 
Test 
    MakeMyClass something1 someghing2 
+0

@ jozefow ..请参阅编辑。 。我现在得到错误对象'makeMyClass'没有方法''pankaj''。 –

+0

您是否需要将类的实例返回给Robot或者您的库只是一个任意的例子? *改变def makeMyClass(arg1,arg2):def makeMyClass(s​​elf,arg1,arg2): *尝试使用唯一的关键字名称,在库和机器人套件中有MakeMyClass,这是有效的,但可能导致实际的错误测试套件 – jozefow

+0

请参阅编辑 –

1

的问题是,sample_func只接受一个参数,但你传递两个参数。当函数被调用时,self参数会被python自动传递,因此您的第一个参数将被分配给arg1

解决方法是停止使用两个参数调用关键字,或者向sample_func添加另一个参数。以下任一操作将工作:

# Myclass.py 
class Myclass(object): 
    ... 
    def sample_func(self, arg1): 
     ... 

# sample.robot 
... 
sample_func ${arg1} 

OR

# Myclass.py 
class Myclass(object): 
    ... 
    def sample_func(self, arg1, arg2): 
     ... 

# sample.robot 
... 
sample_func ${arg1} ${arg2}