J'ai créé la fonction de python pour rechercher à travers un objet ldap comme ci-dessous:Comment convertir un objet ldap en entier dans une fonction python?
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")
J'invoquons ce mot-clé maintenant dans un Testcase Robot comme si:
*** 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
Quand je lance ce comité technique, il me jette une erreur dans la recherche comme ceci:
TypeError: an integer is required
l'erreur est sans aucun doute dans « ldap_result_id = l.search_s (baseDN, SearchScope, Filtre de recherche, récupérer Attributes) "ligne, puisque je suis capable d'imprimer les commentaires précédents.
Quel est le problème ici?
Le problème ici est le niveau d'étendue qui ne peut pas être passé comme ci-dessus de Robot. Les changements que j'ai été:
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)
Robot TC Changements:
*** 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=*
Et le problème est résolu. :)
Veuillez donner quelques détails, à tout le moins où jette-t-il l'erreur - deviner, dans le mot-clé my_search. Va tirer une réponse avec les problèmes évidents en raison de la limite de char ici, mais avec ce niveau de détail, c'est une conjecture sauvage. – Todor