fakeldap هو وحدة بيثون أن يوفر وسيلة بسيطة للسخرية خوادم الواجهة الخلفية LDAP لunittests الخاص على & nbsp؛ فإنه يجعل من الممكن لتحديد مقدما مجموعة من إدخالات الدليل الذي يمكن الاستعلام أو تعيين قيم عائد ثابت لLDAP استفسار. انها بمثابة قطرة في بديل للفئة LDAPObject وحدة الثعبان LDAP. وهي تنفذ مجموعة فرعية من الطرق المسموح به من هذه الفئة.
هذه الوحدة تنفذ الطبقة MockLDAP الذي يعمل على حد سواء باعتبارها LDAPObject فضلا عن وحدة LDAP. وقد اتخذت أكثر من رمز والتصميم من ممتازة وحدة جانغو-المصادقة، LDAP بيتر Sagerson ل.
تركيب
الحصول على وتثبيت الشفرة:
على & nbsp؛ بوابة استنساخ بوابة: //github.com/30loops/fakeldap.git
على & nbsp؛ مؤتمر نزع السلاح fakeldap
على & nbsp؛ بيثون setup.py تثبيت
إذا كنت تريد، يمكنك تشغيل الاختبارات:
على & nbsp؛ nosetests بيثون setup.py
استعمال
ملاحظة: هذا الرمز لا يزال تجريبيا وليس اختبار جدا اعتبارا من بعد. ذلك هو ثائق
الطبقة MockLDAP محل LDAPObject وحدة الثعبان LDAP. أسهل طريقة لاستخدامه، هو الكتابة ldap.initialize للعودة MockLDAP بدلا من LDAPObject. يستخدم المثال التالي مكتبة وهمية مايكل فوورد لتحقيق ما يلي:
unittest استيراد
من التصحيح استيراد وهمية
من fakeldap MockLDAP استيراد
_mock_ldap = MockLDAP ()
فئة YourTestCase (unittest.TestCase):
على & nbsp؛ الإعداد صفر (النفس):
على & 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؛ tearDown مواطنه (النفس):
على & 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؛ # وكما هو متوقع، من هنا مكافئ () أداة اختبار الثعبان الأنف و:
على & nbsp؛ eq_ (return_value، نتيجة)
على & nbsp؛ # دعوة كل LDAP الفعلي البرنامج يجعل يحصل على تسجيلها. يمكنك
على & nbsp؛ # إعداد قائمة المكالمات التي تتوقع أن تصدر ومقارنتها:
على & nbsp؛ called_records = []
على & nbsp؛ called_records.append (('simple_bind_s،
على & nbsp؛ {'الذين': 'CN = المشرف، DC = 30loops، DC = صافي'، 'مؤهلاته': '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؛ ('رمز المستخدم'، 'كريتو')،
على & nbsp؛ ('userPassword'، 'سر')،
]
# قيمة الإرجاع أتوقع عندما أضيف رقما قياسيا جديدا إلى الدليل
eq_ (
على & nbsp؛ (105، []، 1، [])،
على & nbsp؛ mock_ldap.add_s ("رمز المستخدم = كريتو، OU = الناس، DC = 30loops، DC = الصافي"، رقم قياسي)
)
# الدليل المتوقع
الدليل = {
على & nbsp؛ "CN = المشرف، DC = 30loops، DC = الصافي": {"userPassword": "ldaptest"}،
على & nbsp؛ "المرن = كريتو، OU = الناس، DC = 30loops، DC = الصافي": {
على & nbsp؛ "رمز المستخدم": "كريتو"، "userPassword": "سر"}
}
# قارن الدليل المتوقع مع الدليل MockLDAP
eq_ (دليل، mock_ldap.directory)
المتطلبات:
بيثون
لم يتم العثور على التعليقات