fakeldap是一個Python模塊,它提供了一種簡單的方式來嘲笑LDAP後端服務器為您的單元測試 它使我們能夠定義前期一組可查詢或設置固定回報值將LDAP查詢目錄條目。它可以作為替代的下降為LDAPObject類蟒蛇,LDAP模塊。它實現了這個類的允許的方法的一個子集。
這個模塊實現的功能既作為LDAPObject以及ldap的模塊的MockLDAP類。大部分的代碼和設計已經摘自彼得Sagerson出色的Django的AUTH-LDAP模塊。
安裝
獲取並安裝代碼:
 混帳混帳克隆://github.com/30loops/fakeldap.git
  CD fakeldap
 蟒蛇setup.py安裝
如果你願意,你可以運行測試:
 蟒蛇setup.py nosetests
用法
注意::此代碼是仍處於實驗階段,不是很測試的呢。那麼,文檔
該MockLDAP類取代了蟒蛇,LDAP模塊的LDAPObject。使用它的最簡單的方法,是覆蓋ldap.initialize返回,而不是LDAPObject MockLDAP。下面的示例使用邁克爾Foord的模擬磁帶庫,以實現這一目標:
進口單元測試
從模擬進口補丁
從fakeldap進口MockLDAP
_mock_ldap = MockLDAP()
類YourTestCase(unittest.TestCase的):
  DEF設置(個體經營):
 #補丁,其中LDAP庫使用:
  self.ldap_patcher =補丁('app.module.ldap.initialize“)
  self.mock_ldap = self.ldap_patcher.start()
  self.mock_ldap.return_value = _mock_ldap
 高清tearDown的(個體經營):
  _mock_ldap.reset()
  self.mock_ldap.stop()
模擬LDAP對象實現以下LDAP操作:
- simple_bind_s
- search_s
- compare_s
- modify_s
- delete_s
- add_s
- rename_s
這是一個例子,如何使用MockLDAP具有固定的返回值:
高清test_some_ldap_group_stuff(個體經營):
 #定義LDAP操作的預期收益值
  RETURN_VALUE =(“CN = testgroup,OU =組,DC = 30loops,DC =淨”,{
 '的objectClass':['posixGroup'],
 'CN':'testgroup“,
 '的gidNumber':'2030',
 })
 #註冊一個返回值與MockLDAP對象
  _mock_ldap.set_return_value('add_s',
 (“CN = testgroup,OU =組織,DC = 30loops,DC =淨”,(
 ('的objectClass“,('posixGroup')),
 ('CN','testgroup'),
 ('的gidNumber','2030'))),
 (105,[],10,[]))
 #運行實際代碼,這只是一個例子
  group_manager = GroupManager()
 結果= group_manager.add(“testgroup”)
 #斷言MockLDAP你的方法的返回值
 #如預期的,在這裡使用python鼻的EQ()測試工具:
  eq_(RETURN_VALUE,結果)
 #每個實際的LDAP打電話給你的軟件使得被記錄下來。你可以
 #編寫,您希望將發行和比較它的通話清單:
  called_records = []
  called_records.append(('simple_bind_s',
  {'誰':'CN =管理員,DC = 30loops,DC =淨“,”名氣“:”ldaptest'}))
  called_records.append(('add_s',{
 “DN”:“CN = testgroup,OU =組織,DC = 30loops,DC =淨”,
 “記錄”:
 ('objectClass的',['posixGroup']),
 ('的gidNumber','2030'),
 ('CN','testgroup'),
 ]}))
 #並再次測試預期的行為
  eq_(called_records,_mock_ldap.ldap_methods_called_with_arguments())
除了特定的呼叫固定的返回值,你也可以模仿一個完整的LDAP服務器條目的目錄:
#創建MockLDAP的實例與預設目錄
樹= {
 “CN =管理員,DC = 30loops,DC =淨”:{
 “的userPassword”:“ldaptest”
 }
}
mock_ldap = MockLDAP(樹)
記錄= [
 (為'uid','克利托'),
 ('的userPassword','秘密'),
]
#返回值我希望當我另一個記錄添加到目錄
eq_(
 (105,[],1,[]),
  mock_ldap.add_s(“UID =克利托,OU =人,DC = 30loops,DC =淨”,記錄)
)
#預期目錄
目錄= {
 “CN =管理員,DC = 30loops,DC =淨”:{“的userPassword”:“ldaptest”},
 “UID =克利托,OU =人,DC = 30loops,DC =淨”:{
 “UID”:“克里托”,“的userPassword”:“秘密”}
}
#與MockLDAP目錄比較預期的目錄
eq_(目錄,mock_ldap.directory)
要求:
- 在Python的
評論沒有發現