如何将LDAP对象转换为Python函数中的整数



我已经创建了Python函数,以通过LDAP对象进行搜索:

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

所以我现在在机器人测试柜中调用此关键字:

*** 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时,它会在搜索中给我带来错误:

TypeError: an integer is required

错误肯定是在" ldap_result_id = l.search_s(基于搜索,搜索filter,retrieveatTributes)"中,因为我能够打印早期的注释。

这里有什么问题?

这里的问题是范围级别,该范围无法按照机器人的方式传递。我所做的更改是:

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=*

解决问题。:)

假定异常是在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模块中定义的常数;最安全的赌注是,它将以${1}的格式提供该const整数的整数价值,但这几乎是可持续的。也许您可以将其导出和COMMON/Libraries/pythonldap.py库中的其他常数,并在测试用例中使用它
  • 最后, retrieveAttributes参数将接收字符串文字"无",而不是您可能想要的None数据类型。要获得它,请使用此RF内置变量-${None}

hth,再次提供更多详细信息以接收现场答案。

相关内容

  • 没有找到相关文章

最新更新