Python test
Using robotized trials is a good approach for improving the stability of your module when developing
large apps. Your module becomes more active as a result. Odoo releases an alternate version of its
product on a regular basis, and automated tests are very helpful in identifying application relapses
that may have resulted from adaptive redesign. Fortunately, various automated testing tools come with
every Odoo framework. Odoo has the following three basic types of tests:
- Python Unit Testing: beneficial for evaluating business logic models
- JavaScript Unit Testing: helpful for testing the code independently.
- Tours: tours act as a lifelike simulation. They guarantee that the javascript and python components
communicate with each other correctly.
Adding Python Test Cases
your_module
|
|---- …
|---- python_test_cases
|----- __init__.py
|------ test_purchase.py
|----- test_sale.py
When composing examinations
- You should define a test subpackage in your module.
- Test_ is a required prefix for all test files in the Tests subpackage
- Test_ is a required prefix for all test files in the Tests subpackage
- Every test needs to expand upon the Odoo test case class.
- Every test method needs to begin with def test_.
Here, the tests/__init__.py contains
from . import test_sale from . import test_purchase
Extend an Odoo test case class
Odoo offers several testing-related tools and resources. Test case classes make up the majority of Odoo
content; therefore, we must extend any of these classes while building test cases in Odoo.
- odoo.tests.common.TransactionCase
This test case class is utilized the most frequently. The
test class in which every test method is executed in a sub-transaction overseen by a savepoint, yet
all test methods are executed in a single transaction. The transaction's cursor is never committed; it
is always closed.
- odoo.tests.common.SingleTransactionCase TestCase: In this scenario, the transaction is initiated
with the first test method and rolled back at the conclusion of the last. All test methods are
executed within the same transaction.
- odoo.tests.common.HttpCase
- odoo.tests.common.SavepointCase
Chrome headless helpers and url_open are used in this transactional HTTP test case.
After extending any of these classes, your code looks like the following
# -*- coding: utf-8 -*-
from odoo.tests import TransactionCase
class MyTest(TransactionCase):
All the test files should start with test_
Make careful to prefix all of your test files with test_, when you create new ones.
All the test methods should start with test_
Test_ should be the first character in the test method when creating test cases.
# -*- coding: utf-8 -*-
from odoo.tests import TransactionCase
class MyTest(TransactionCase):
def test_string_concatenation_and_length(self):
Writing A Test- Example
# -*- coding: utf-8 -*-
from odoo.tests import TransactionCase
class MyTest(TransactionCase):
def test_string_concatenation_and_length(self):
student = self.env['student.student'].create({'f_name': "Ajay", 'l_name': "Malhothra"})
"""student name checking"""
self.assertEqual(
# Actual results from function call...
student.name,
# Expected results from the function call...
"AjayMalhothra"
)
"""student name length checking"""
self.assertEqual(
# Actual results from function call...
student.string_length(),
# Expected results from the function call...
15)
In the example above, we have written a test method called test_string_concatenation_and_length(),
which checks the length of the concatenated string as well as the string concatenation.
Running Tests
We can run the odoo test cases in different ways
- Starting the Odoo server with --test-enable enabled. After installing or updating a module, tests
are conducted.
- It will run a Python test file by using the option --test-file .
- Using the [-] --test-tags[tag][/module][:class][.method]