የSmartERP መመሪያ የAshewa Technology Solutions መድረክ
ይህ ገጽ ገና ወደ አማርኛ አልተተረጎመም። የእንግሊዝኛው ጽሑፍ ቀርቧል።

Testing Strategies and Test-Driven Development (TDD)

Writing unit tests with TransactionCase, HTTP tests with HttpCase, and creating fast offline test suites without database overhead.

1. Overview & Business Value#

This comprehensive operational guide details the architecture, business workflows, configuration parameters, and execution steps for Testing Strategies and Test-Driven Development (TDD) within SmartERP.

SmartERP enforces layered testing: fast offline checks run in sub-seconds, followed by module transaction tests, and integration regression suites.

TransactionCase Example#

from odoo.tests.common import TransactionCase, tagged

@tagged('post_install', '-at_install')
class TestAssetLifecycle(TransactionCase):
    def setUp(self):
        super().setUp()
        self.asset = self.env['smarterp.enterprise.asset'].create({
            'name': 'Server Rack A1',
            'cost': 45000.0,
        })

    def test_asset_creation(self):
        self.assertEqual(self.asset.name, 'Server Rack A1')
        self.assertGreater(self.asset.cost, 0)

{screenshot:testing-and-test-driven-development-overview-dashboard}

2. Prerequisites & Security Access Groups#

  • Required Modules: base, web, smarterp_core
  • Security Groups:
    • Enterprise Developer (Technical ID: base.group_no_one)
    • System Administrator (Technical ID: base.group_system)
  • Master Data Dependencies: Established local development toolchain (Python 3.12+, PostgreSQL 16), cloned repository (smarterp-platform), and valid database configuration.

3. Step-by-Step Configuration & Execution#

Step 1: Navigating to the Module Interface#

  1. Open your terminal or development environment in the repository root (/Users/danielbekele/smarterp-platform).
  2. Activate your dedicated Python virtual environment.
  3. Verify Git branch status: git status.

{screenshot:testing-and-test-driven-development-app-switcher-navigation}

Step 2: Creating and Parameterizing Records#

  1. Execute development commands or scaffolding templates.
  2. Define mandatory manifest parameters:
    • name (Mandatory): Descriptive module title.
    • version (Mandatory): Standard semantic versioning (e.g. 19.0.1.0.0).
    • depends (Mandatory): Explicit list of upstream module dependencies.
    • license (Mandatory): Open source or proprietary enterprise license identifier.
  3. Configure optional parameters: data files, security ACLs, and automated test cases.

{screenshot:testing-and-test-driven-development-record-creation-form}

Step 3: Validating and Processing Transactions#

  • Execution & Testing: Run unit tests via odoo-bin -i <module_name> --test-enable --stop-after-init.
  • Quality Verification: Ensure test suite passes with zero errors and zero unhandled warnings.

{screenshot:testing-and-test-driven-development-transaction-processing-state}

4. Advanced Configuration Points#

  • Automated Actions & Scheduled Tasks (Crons):
    • Developer: Module test runner trigger (base.ir_cron_run_tests)
    • System: Automated cache cleanup (base.ir_cron_cache_cleanup)
  • Custom Print Templates & Reports:
    • Technical Data Dictionary Specification
    • Code Quality & Test Coverage Dossier
  • Multi-Company Rules: Record-level security isolation under Company 1 (Ashewa Technology Solutions S.C.).

5. Comprehensive Troubleshooting Matrix#

Error Symptom / ExceptionProbable Root CauseCorrective Action / Resolution
ImportError: cannot import name from odooOutdated virtualenv or PYTHONPATH misconfiguration.Re-activate virtualenv and verify that Odoo 19 libraries are correctly installed.
ParseError: Element '<tree>' is deprecatedAttempting to use legacy Odoo tree view syntax in Odoo 19.Replace <tree> with <list> in the view XML definition.
ValidationError: External ID not foundManifest data list contains an item before its prerequisite is loaded.Re-order XML filenames in __manifest__.py so security and parent menus load first.
መጨረሻ የተሻሻለው: 2026-10-30