2017-03-02 11 views
0

Pythonを使用してエントリを追加しようとしていて、Robot TCで呼び出しています。私のPythonのコードは次のとおりです。Python-ldap Robot Frameworkを使用してエントリを追加できない

#!/usr/bin/env python 
import ldap 
import ldap.modlist as modlist 
def LdapAddObject(l,dn,attributeDict): 
attrs={} 
for key in sorted(attributeDict.keys()): 
    Attrib=getattr(attributeDict,key) 
    attrs[key]=Attrib 
    print attrs 
ldif=modlist.addModlist(attrs) 
l.add_s(dn,ldif) 
l.unbind_s() 

マイロボットのコードは次のとおりです。

TypeError: ('expected a string in the list', u'subscriber') 

それは間違いなくADD_S関数内のどこかに障害が発生している:

*** Settings *** 
Documentation  This testsuite checks the LDAP functionalities of DB nodes. 

*** Test Cases *** 
Perform Ldap Operations 
${ObjList} Create List subscriber 
&{DN-Dict} Create Dictionary objectclass=${ObjList} uid='2620105000000' 
${ldapObj} ldapopen ${DB_1_EXT_APP_IP} 
LdapAddObject ${ldapObj} uid=262010500,ds=hello,o=DEF,dc=LDB ${DN-Dict} 

それは私に言って、エラーがスローされます。

+0

Pythonコードで 'for'ループが必要ですか?ちょうどdictをdictに変換するように見えますか? – Todor

+0

私は試みた試行錯誤の一つに過ぎませんでした。それは必要ではありません。それは何の違いもありませんでした。 – Arpitha

答えて

0

Python-ldapはUnicode文字列で問題を抱えていました。私は長い間使っていませんが、最新のバージョンでは修正されていません。

エラーを見れば、ここに似ていますが、ユニコードの引数を文字列に変換するだけです。 RF Convert To StringやPythonのstr()

編集を使用します。たとえば、リストのメンバーをキャスト:辞書の​​値について同様の

${subscriber}  Convert To String subscriber 
${ObjList} Create List ${subs} 

+0

私は、objectclassがListを値として期待していることを理解しました。だから私はロボットで同じことを渡した。しかし、私はpythonのfuntionでそれをうまく処理していないと思う。 – Arpitha

+0

@Arpithaというのはリストメンバーと辞書の値がString型(Unicodeではなく)であることです。私は答えを編集して例を挙げました。 – Todor

関連する問題