من یه سری کد جدید به صورت یک ماژول جدید در اودوو توسعه دادم. میخوام براش یه سری تست آماده کنم که بتونم در آینده از درست کار کردن ماژول مطمئن باشم. چطور میتونم این ماژول رو تست کنم؟
1 پاسخ
برای تست ماژول جدیدی که در اودو توسعه دادهاید، میتوانید از روشهای زیر استفاده کنید:
1. استفاده از تست واحد: در این روش، شما برای هر تابع و قابلیت موجود در ماژول، یک تست واحد مینویسید تا از درستی عملکرد آنها اطمینان حاصل کنید. برای ایجاد تست واحد در اودو میتوانید از قابلیتهای موجود در ماژول odoo.addons.base.ir.ir_unittest استفاده کنید.
2. استفاده از تست عملکردی: در این روش، شما تستهایی برای بررسی عملکرد کلی ماژول و وظایف آن نوشته و اجرا میکنید. برای ایجاد تست عملکردی میتوانید از ابزارهایی مانند Selenium یا Odoo Functional Testing استفاده کنید.
3. استفاده از تست کاربری: در این روش، شما تستهایی را ایجاد میکنید که به صورت خودکار عملیات کاربران را در ماژول انجام داده و در نتیجه از درستی عملکرد ماژول اطمینان حاصل میکنید. برای ایجاد تست کاربری میتوانید از ابزارهایی مانند OpenUpgrade استفاده کنید.
4. استفاده از تست انتگراسیون: در این روش، شما ماژول خود را با بقیه ماژولها و اجزای سیستم ادغام میکنید و تست عملکرد کلی آن را بررسی میکنید. برای ایجاد تست انتگراسیون میتوانید از ابزارهایی مانند Travis CI استفاده کنید.
با توجه به نوع ماژول و نوع تست مورد نیاز، میتوانید از یک یا ترکیبی از این روشها برای تست ماژول خود استفاده کنید. همچنین برای تست کردن ماژول در اودو، میتوانید از قابلیتهای موجود در محیط تست odoo استفاده کنید که به شما اجازه میدهد ماژول خود را در یک محیط جداگانه از سیستم اصلی اجرا کنید و عملکرد آن را بررسی کنید.
مثال برای تست عملکردی:
در این مثال، فرض کنید ما یک ماژول جدید برای مدیریت محصولات داریم و میخواهیم تابعی را برای محاسبه قیمت محصول با توجه به تخفیفهای موجود در سیستم پیادهسازی کنیم:
در این کد، تابع `_compute_final_price` برای محاسبه قیمت نهایی محصول با توجه به تخفیفهای موجود پیادهسازی شده است. برای تست این تابع، میتوانیم یک تست واحد برای آن بنویسیم که مقادیر مختلفی را برای قیمت و تخفیف محصول ورودی داده و خروجی را بررسی کند. به طور مثال، کد زیر یک تست واحد برای این تابع است:
در این تست، ابتدا دو محصول با قیمت و تخفیف مختلف ساخته شده و سپس قیمت نهایی محصول با توجه به تابع `_compute_final_price` محاسبه شده و با خروجی مورد انتظار مقایسه شده است. توجه کنید که در این تست از تابع `assertAlmostEqual` استفاده شده است که برای مقایسه اعداد اعشاری به کار میرود.
با اجرای این تست با دستور `python3 odoo-bin -d mydb -u my_module --test-enable`، از صحت عملکرد تابع `_compute_final_price` در محصولات ساخته شده، اطمینان حاصل میشود.