Testing in odoo
有許多方法可以測試應用程序。 在Odoo,我們有三種測試
- python單元測試:用於測試模型業務邏輯
- js單元測試:這是隔離測試javascript代碼所必需的
- tours:這是一種集成測試形式。 游覽確保python和javascript部分正確地相互通信。
Testing Python code
Odoo使用unittest為測試模塊提供支持。
要編寫測試,只需在模塊中定義test
子包,就會自動檢查測試模塊。 測試模塊的名稱應該以test_
開頭,並且應該從tests / __ init__.py
導入,例如:
your_module
|-- ...
`-- tests
|-- __init__.py
|-- test_bar.py
`-- test_foo.py
和__init__.py
包含:
from . import test_foo, test_bar
警告
未從tests / __ init__.py
導入的測試模塊將不會運行
在8.0版中更改:之前,測試運行器只運行添加到兩個列表fast_suite
的模塊並checks
在tests / __ init__.py
。 在8.0中,它將運行所有導入的模塊
class odoo.tests.common.TransactionCase(methodName='runTest')
TestCase,其中每個測試方法都在自己的事務中運行,並帶有自己的游標。 回滾事務並在每次測試后關閉游標。
browse_ref(xid)
返回提供的外部標識符的記錄對象
Parameters:xid --完全限定的外部標識符,格式為module.identifier
Raise: ValueError if not found
Returns:
Basemodel
ref(xid)
返回提供的外部標識符的數據庫ID,get_object_reference
的快捷方式
Parameters:xid- -完全限定的外部標識符,格式為module.identifier
Raise: ValueError if not found
Returns:
registered id
默認情況下,在安裝相應模塊后立即運行測試。 測試用例也可以配置為在安裝所有模塊后運行,而不是在模塊安裝后立即運行:
odoo.tests.common.at_install(flag)
設置測試的at-install狀態,該標志是一個布爾值,指定在模塊安裝期間測試應該(True
)還是不應該(False
)運行。
默認情況下,在開始安裝下一個模塊之前,在安裝模塊后立即運行測試。
odoo.tests.common.post_install(flag)
設置測試的安裝后狀態。 該標志是一個布爾值,指定在一組模塊安裝之后是否應該運行測試。
默認情況下,在安裝當前安裝集中的所有模塊后,不會運行測試。
最常見的情況是使用TransactionCase
並在每個方法中測試模型的屬性:
class TestModelA(common.TransactionCase):
def test_some_action(self):
record = self.env['model.a'].create({'field': 'value'})
record.some_action()
self.assertEqual(
record.field,
expected_field_value)
# other tests...
測試方法必須從
test_
開始
Running tests
如果在啟動Odoo服務器時啟用了--test-enable
,則在安裝或更新模塊時會自動運行測試。
從Odoo 8開始,不支持在安裝/更新周期之外運行測試。
Testing JS code
Qunit test suite
Odoo Web包括對Odoo Web的核心代碼和您自己的javascript模塊進行單元測試的方法。 在javascript方面,單元測試基於QUnit,其中包含許多幫助程序和擴展,可以更好地與Odoo集成。
要查看運行器的外觀,找到(或啟動)啟用了Web客戶端的Odoo服務器,然后導航到/ web / tests
這將顯示運行器選擇器,它會列出所有帶有javascript單元測試的模塊,並允許啟動任何 他們(或所有模塊中的所有javascript測試)。
單擊任何運行器按鈕將在捆綁的QUnit運行器中啟動相應的測試:
Writing a test case
本節將盡快更新。
Integration Testing(集成測試)
單獨測試Python代碼和JS代碼非常有用,但它並不能證明Web客戶端和服務器協同工作。 為了做到這一點,我們可以編寫另一種測試:游覽。 游覽是一些有趣的業務流程的迷你場景。 它解釋了應遵循的一系列步驟。 然后,測試運行器將創建一個phantom_js瀏覽器,將其指向正確的URL並根據場景模擬點擊和輸入。