.
fakeldap یک ماژول پایتون فراهم می کند که یک راه ساده برای مسخره سرورهای LDAP باطن برای unittests شما & nbsp است؛ آن را ممکن می سازد تعریف صف مقابل مجموعه ای از نوشته های دایرکتوری که می تواند درخواست و یا مجموعه ای مقادیر بازگشتی ثابت به LDAP نمایش داده شد. آن را به عنوان یک قطره در جایگزینی برای کلاس LDAPObject از ماژول پایتون-LDAP عمل می کند. این پیاده سازی یک زیر مجموعه از روش اجازه از این کلاس.
این ماژول را پیاده سازی کلاس MockLDAP که توابع هر دو به عنوان LDAPObject و همچنین ماژول LDAP. بسیاری از کد و طراحی شده است از عالی ماژول جنگو-تایید-LDAP پیتر Sagerson گرفته شده است.
نصب
دریافت و نصب کد:
دستگاه گوارش کلون GIT، لمس و: //github.com/30loops/fakeldap.git
کنید. & nbsp؛ fakeldap سی دی
& nbsp؛ در پایتون setup.py نصب
اگر می خواهید، شما می توانید آزمون را اجرا کنید:
& nbsp؛ در nosetests setup.py پایتون
استفاده
توجه: این کد هنوز هم تجربی و بسیار تا هنوز آزمایش نشده است. بنابراین مستندات است
کلاس MockLDAP جایگزین LDAPObject از ماژول پایتون-LDAP. ساده ترین راه برای استفاده از آن، این است که بازنویسی ldap.initialize به بازگشت MockLDAP به جای LDAPObject. در مثال زیر با استفاده از کتابخانه مسخره مایکل Foord را برای رسیدن به این:
واردات 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؛ از تمام کردن دف (خود):
کنید. & 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 = ("را انتخاب نمایید: = testgroup، OU = گروه، DC = 30loops، DC = خالص"، {
& nbsp؛ در 'objectClass: [' posixGroup ']،
& nbsp؛ در 'را انتخاب نمایید:': 'testgroup،
& nbsp؛ در 'gidNumber': '2030'،
از & nbsp؛})
از & nbsp؛ # ثبت نام یک مقدار بازگشتی با هدف MockLDAP
& nbsp؛ در _mock_ldap.set_return_value ('add_s،
از & nbsp؛ ("را انتخاب نمایید: = testgroup، OU = گروه، DC = 30loops، DC = خالص"، (
از & nbsp؛ ('objectClass، (' posixGroup))،
از & nbsp؛ ('را انتخاب نمایید:'، '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؛ {'که': 'را انتخاب نمایید: = ADMIN، DC = 30loops، DC = خالص'، 'cred': 'ldaptest'}))
کنید. & nbsp؛ called_records.append ((add_s '، {
& nbsp؛ در 'DN': 'را انتخاب نمایید: = testgroup، OU = گروه، DC = 30loops، DC = خالص "،
& nbsp؛ در 'رکورد: [
از & nbsp؛ ('objectClass'، ['posixGroup'])،
از & nbsp؛ ('gidNumber'، '2030')،
از & nbsp؛ ('را انتخاب نمایید:'، 'testgroup')،
& nbsp؛ در]}))
از & nbsp؛ # و دوباره تست رفتاری مورد انتظار
& nbsp؛ در eq_ (called_records، _mock_ldap.ldap_methods_called_with_arguments ())
علاوه بر تثبیت مقادیر بازگشتی برای تماس های خاص، شما همچنین می توانید تقلید سرور LDAP کامل با یک دایرکتوری از مطالب:
# ایجاد یک نمونه از MockLDAP با یک دایرکتوری از پیش تعیین شده
درخت = {
از & nbsp؛ "را انتخاب نمایید: = ADMIN، 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؛ "را انتخاب نمایید: = ADMIN، DC = 30loops، DC = خالص": {"userPassword": "ldaptest"}،
از & nbsp؛ "UID = crito، OU = مردم، DC = 30loops، DC = خالص": {
از & nbsp؛ "UID": "crito"، "userPassword": "راز"}
}
# مقایسه دایرکتوری انتظار می رود با دایرکتوری MockLDAP
eq_ (دایرکتوری، mock_ldap.directory)
در مورد نیاز:
پایتون
نظر یافت نشد