.
fakeldap 파이썬 당신의 unittests에 대한 LDAP 백엔드 서버를 조롱하는 간단한 방법을 제공하는 모듈 & NBSP이다 그것이 가능한 쿼리 또는 쿼리를 LDAP에 고정 반환 값을 설정할 수 있습니다 디렉터리 항목의 선행 세트를 정의 할 수 있습니다. 그것은 파이썬 - LDAP 모듈의 LDAPObject 클래스의 교체에 드롭 역할을합니다. 그것은이 클래스의 허용 된 방법의 하위 집합을 구현합니다.
이 모듈은 LDAPObject뿐만 아니라 LDAP 모듈로 모두 기능 MockLDAP 클래스를 구현합니다. 코드와 디자인의 대부분은 피터 Sagerson의 우수한 장고 - 인증 - LDAP 모듈에서 촬영되었습니다.
설치
오기와 코드를 설치 :
& NBSP; 자식 클론 자식 : //github.com/30loops/fakeldap.git
& NBSP; CD의 fakeldap
& NBSP; 파이썬 설치 setup.py
당신이 원하는 경우에, 당신은 테스트를 실행할 수 있습니다 :
& NBSP; 파이썬 setup.py의 nosetests
용법
참고 :이 코드는 아직 실험과 매우 아직로서 시험이 아니다. 그래서 문서입니다
MockLDAP 클래스는 파이썬 - LDAP 모듈의 LDAPObject을 대체합니다. 그것을 사용하는 가장 쉬운 방법은, 대신 LDAPObject의 MockLDAP를 반환하는 ldap.initialize을 덮어하는 것입니다. 아래의 예는 그것을 달성하기 위해 마이클 Foord의 모의 라이브러리를 사용합니다 :
수입 유닛 테스트
모의 수입 패치에서
fakeldap 수입 MockLDAP에서
_mock_ldap = MockLDAP ()
클래스 YourTestCase (unittest.TestCase) :
& NBSP; DEF 설정 (자동) :
& NBSP는 # 패치는 LDAP 라이브러리가 사용되는 경우 :
& NBSP; self.ldap_patcher = 패치 ( 'app.module.ldap.initialize')
& NBSP; self.mock_ldap = self.ldap_patcher.start ()
& NBSP; self.mock_ldap.return_value = _mock_ldap
& NBSP; DEF 형 분석 (자기) :
& NBSP; _mock_ldap.reset ()
& NBSP; 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 (자기) :
& NBSP; # LDAP 작업에 대한 예상 반환 값을 정의
& NBSP; {, RETURN_VALUE = ( "CN = testgroup, OU = 그룹, DC = 30loops, DC = 그물"
& NBSP; '방법 objectClass'[ 'posixGroup'],
& NBSP; 'CN': 'testgroup'
& NBSP; 'gidNumber': '2030',
& NBSP;})
& NBSP; # MockLDAP 객체와 반환 값을 등록
& NBSP; _mock_ldap.set_return_value ( 'add_s'
& NBSP; ( "CN = testgroup, OU = 그룹, DC = 30loops, DC = 그물"(
& NBSP ( '방법 objectClass'( 'posixGroup')),
& NBSP ( 'CN', 'testgroup')
& NBSP ( 'gidNumber', '2030'))),
& NBSP (105, [], 10 []))
& NBSP; # 실제 코드를 실행, 이것은 단지 예입니다
& NBSP; group_manager = GroupManager ()
& NBSP; 결과 = group_manager.add ( "testgroup")
& NBSP; #는 주장 당신의 방법과 MockLDAP의 반환 값
& NBSP; 여기 파이썬 코의 EQ () 테스트 도구를 사용하여, 예상대로 #은 다음과 같습니다 :
& NBSP; eq_ (RETURN_VALUE, 결과)
& NBSP; # 각 실제 LDAP는 소프트웨어가 기록됩니다하게 호출합니다. 당신은 할 수
& NBSP #가 발행되고 비교 될 것으로 예상 통화 목록을 준비 :
& NBSP; called_records의 = []
& NBSP; called_records.append (( 'simple_bind_s'
& NBSP; { '사람': 'CN = 관리자, DC = 30loops, DC = 그물', 'cred하게': 'ldaptest'}))
& NBSP; called_records.append (( 'add_s', {
& NBSP; 'DN': 'CN = testgroup, OU = 그룹, DC = 30loops, DC = 그물 ",
& NBSP; '기록'[
& NBSP ( '방법 objectClass'[ 'posixGroup'),
& NBSP ( 'gidNumber', '2030'),
& NBSP ( 'CN', 'testgroup')
& NBSP;]}))
& NBSP; # 다시 예상되는 동작을 테스트
& NBSP; eq_ (called_records, _mock_ldap.ldap_methods_called_with_arguments ())
특정 호출에 대한 반환 값을 고정 게다가, 당신은 항목의 디렉토리와 전체 LDAP 서버를 모방 할 수 있습니다 :
# 미리 설정 한 디렉토리로 MockLDAP의 인스턴스를 생성
나무 = {
& NBSP; "CN = 관리자, DC = 30loops, DC = 그물": {
& NBSP;의 "userpassword": "ldaptest"
& NBSP;}
}
mock_ldap = MockLDAP (나무)
기록 = [
& NBSP ( 'UID', 'crito')
& NBSP; ( 'userPassword에', '비밀')
]
내가 디렉토리에 다른 레코드를 추가 할 때 예상 # 반환 값
eq_ (
& NBSP (105, [], 1 []),
& NBSP; mock_ldap.add_s ( "UID = crito, OU = 사람들, DC = 30loops, DC = 그물", 기록)
)
# 예상 디렉토리
디렉토리 = {
& NBSP; "CN = 관리자, DC = 30loops, DC = 그물": {의 "userpassword": "ldaptest"},
& NBSP; "UID = crito, OU = 사람들, DC = 30loops, DC = 그물": {
& NBSP; "UID": "crito"의 "userpassword": "비밀"}
}
# MockLDAP 디렉토리로 예상되는 디렉토리를 비교
eq_ (디렉토리, mock_ldap.directory)
요구 사항 :
파이썬
댓글을 찾을 수 없습니다