یک تابع پایتون بنویس که یک لاگر را پیکربندی کند تا هدر شامل نام برنامه و سطح لاگ را در ابتدای هر پیام اضافه کند و در docstring با مثال doctest نشان دهد چگونه خروجی لاگ را با استفاده از StringIO برای تست گرفتن و بررسی کنیم.
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:37 0.0
برای حل این مسئله از ماژول logging پایتون استفاده کنید؛ یک Formatter با فرمت شامل %(name)s و %(levelname)s تعریف کنید و آن را به یک StreamHandler متصل کنید که خروجیاش به io.StringIO هدایت میشود تا در doctest بتوانید متن لاگ را بخوانید و با assert بررسی کنید. در docstring یک مثال doctest قرار دهید که لاگر را پیکربندی کرده، پیامی لاگ میکند و سپس محتوای StringIO را برای داشتن هدر و متن مورد انتظار بررسی میکند؛ در انتها مطمئن شوید لاگر یا هندلرها را ریست یا حذف میکنید تا تستهای بعدی تداخلی نداشته باشند.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی، از یک Formatter با format مثل %(name)s %(levelname)s: %(message)s استفاده کنید تا نام برنامه و سطح لاگ در ابتدای هر پیام دیده شود. یک StreamHandler با stream=io.StringIO به لاگر اضافه کنید تا خروجی برای doctest در یک رشته قابل بررسی باشد. پس از انجام تست، یا هدلرها را از لاگر حذف کنید یا حداقل آنها را با reset کنید تا تداخل تستهای بعدی کاهش یابد. همچنین بهتر است از logger = logging.getLogger(__name__) به جای لاگر ریشه استفاده کنید تا از تداخل با سایر بخشهای برنامه جلوگیری شود.
گزارش