2017-03-01 11 views
0

以下のように私は、LDAPオブジェクトを検索するPythonの関数を作成しました:だから、私はそうのようにロボットのテストケースでは、今このキーワードを呼び出すPython関数でldapオブジェクトを整数に変換するにはどうすればよいですか?

def my_search(l, baseDN, searchScope=ldap.SCOPE_ONELEVEL, searchFilter="objectClass=*", retrieveAttributes=None): 
    logger.console("Reachedhere") 
    try: 
     logger.console("Reachedhereinsidetry\n") 
     ldap_result_id =  l.search_s(baseDN,searchScope,searchFilter,retrieveAttributes) 
     logger.console("Gotresult\n") 

*** Settings *** 
Documentation  This testsuite checks the LDAP functionalities of DB nodes. 
Resource   ../../COMMON/Libraries/SDL-DB-COMMON-LIB.txt 
Library   ../../COMMON/Libraries/pythonldap.py 

*** Test Cases *** 
Perform Ldap Operations 
    ${ldapObj} ldapopen ${DB_1_EXT_APP_IP} 
    Log to Console ${ldapObj} 
    ${SearchReturn} my_search ${ldapObj} "uid=5000000,ds=CRIBER,o=D,dc=CN" ldap.SCOPE_ONELEVEL "objectClass=*" None 

私はこのTCを実行すると、それをエラーが「ldap_result_id = l.search_s(ベースDN、searchScope、searchFilterに間違いなくある

TypeError: an integer is required 

、取得:私はそうのような検索でエラーがスローされます私は以前のコメントを印刷することができます。

ここで問題は何ですか?

ここで問題となるのは、ロボットから渡すことができない範囲のレベルです。私は変更されました:

def my_search(l, baseDN, searchScopeLevel, searchFilter="objectClass=*", retrieveAttributes=None): 
try: 
    if searchScopeLevel == 'ONE': 
     searchScope=ldap.SCOPE_ONELEVEL 
    elif searchScopeLevel == 'BASE': 
     searchScope=ldap.SCOPE_BASE 
    elif searchScopeLevel == 'SUB': 
     searchScope=ldap.SCOPE_SUBTREE 
    ldap_result_id = l.search(baseDN,searchScope,searchFilter,retrieveAttributes) 

ロボットTCの変更:

*** Test Cases *** 
Perform Ldap Operations 
    ${ldapObj} ldapopen ${DB_1_EXT_APP_IP} 
    ${SearchReturn} my_search ${ldapObj}  uid=205000000,ds=CRIBER,o=DEFT,dc=C ONE objectClass=* 

そして、問題が解決されます。 :)

+0

少なくとも、my_searchキーワードのどこにエラーを推測するのか、いくつかの詳細を教えてください。ここでは文字の制限があるため、明白な問題で答えを出すだろうが、このレベルの細部は野生のものだ。 – Todor

答えて

1

例外は、my_searchメソッドで発生すると推定されます。デフォルトでは、RFのメソッドへの引数は文字列にキャストされます。したがって、このコール:

${SearchReturn} my_search ${ldapObj} "uid=2620105000000,ds=SUBSCRIBER,o=DEFAULT,dc=C-NTDB" ldap.SCOPE_ONELEVEL "objectClass=*" None 

は多くの問題を持っている:

  • baseDN引数は実際の値"uid=2620105000000,ds=SUBSCRIBER,o=DEFAULT,dc=C-NTDB"必要があります - 引用符は、あなたが目指しているものので、おそらく、含まれておりませんで、すなわちを。 searchFilterのためにそれらを
  • 同じを削除する - このコンテンツの文字列 - おそらくあなたの問題であるコール
  • searchScope、中に引用符を削除し、値ldap.SCOPE_ONELEVELを受け取ることになります。これはおそらくあなたのLDAPモジュールで定義されている定数です。そのconstの整数値を提供することが最も安全な方法です - 整数は${1}の形式で与えられますが、それはほとんど持続可能ではありません。おそらくCOMMON/Libraries/pythonldap.pyライブラリのそれと他の定数をエクスポートし、テストケースで使用することができます。
  • 最後にretrieveAttributes引数には、おそらくNoneというデータ型ではなく文字列リテラル "None"が返されます。それを得るには、このRF組み込み変数を使用してください - ${None}

HTH、そしてもう一度、オンザスポット回答を受け取るための詳細を提供してください。

+0

ありがとう@Todor。問題はldap.SCOPE_ONELEVELにありました。私はロボットのテストケースから直接渡すことはできません。このエラーが発生します。だから私はロボットTCからONEを渡して、ldap.SCOPE_ONELEVELを選択するようにPython関数を修正しました。元の投稿で更新しています。 – Arpitha

+0

これは実行可能なソリューションです。 – Todor

関連する問題