2017-10-24 12 views
0

私は何が間違っているのか把握しようとしています。 特定のPython関数の結果を取得したいと思います。 ロボットフレームワークからPython関数を呼び出す

この

は私Resources.robotファイルです:

*** Settings *** 
Library       resources_func.py 

*** Keywords *** 
Test Time 
    ${time_delta}=    get time period  ${Time} 
  • $ {時間}定義されていますが、私の質問

には関係ありません、これは私のPythonスクリプトです:

import re 
from dateutil.parser import parse 

class TimeTests(object): 
    def get_time_period(timestamp): 
     timestamps = re.findall(r'[0-9][0-9]:[0-9][0-9]', timestamp) 
     a = parse(timestamp[0]) 
     b = parse(timestamp[1]) 
     res = (b - a) 
     res = res.seconds/60 
     return res 

これは私が得るエラーです:

No keyword with name 'get time period' found. 

将来的には他の人のために
+1

ファイル名をresources_func.pyからクラス名:resources_func.py> TimeTests.pyに変更してもう一度お試しください。 – jozefow

+0

これはうまくいった!おかげさまで –

答えて

3

は、ライブラリがインポートされるときに使用されたテストライブラリの名前が の名前と同じである http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#id216

ユーザライブラリの作成についてRFドキュメントに見てモジュールまたはそれを実装するクラス。 の例では、PythonモジュールのMyLibrary(すなわち、ファイル MyLibrary.py)を持っている場合、MyLibraryという名前のライブラリが作成されます。 同様に、JavaクラスのYourLibraryは、パッケージに含まれていない場合は、 という名前のライブラリを作成します。

Pythonクラスは常にモジュール内にあります。ライブラリを実装するクラス の名前がモジュールの名前と同じ場合、Robot フレームワークでは、ライブラリをインポートするときにクラス名を削除できます。 たとえば、MyLib.pyファイル内のMyLibクラスは、MyLibという名前のライブラリ として使用できます。サブモジュールでも同様に動作します。 の例では、parent.MyLibモジュールにMyLibクラスがあり、 parent.MyLibだけを使用してインポートします。モジュール名とクラス名が異なる場合は、モジュール名とクラス名の両方を使用して ライブラリを使用する必要があります。mymodule.MyLibraryやparent.submodule.MyLibなどです。

関連する問題