Vo Minh Thu (OpenERP) has proposed merging
lp:~openerp-dev/openobject-server/trunk-test-classes-vmt into
lp:openobject-server.
Requested reviews:
OpenERP Core Team (openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-test-classes-vmt/+merge/94926
--
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-test-classes-vmt/+merge/94926
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-server/trunk-test-classes-vmt.
=== modified file 'openerp/tests/__init__.py'
--- openerp/tests/__init__.py 2012-02-13 16:20:58 +0000
+++ openerp/tests/__init__.py 2012-02-28 09:27:24 +0000
@@ -1,14 +1,32 @@
# -*- coding: utf-8 -*-
-import unittest2
+"""
+Tests for the OpenERP library.
+
+This module groups a few sub-modules containing unittest2 test cases.
+
+Some of those test sub-modules are explicitely listed in the `fast_suite`
+variable. Most of the tests should be considered fast enough to be included in
+that `fast_suite` list and only tests that take a long time to run (e.g. more
+than a minute) should not be listed.
+
+Some other test sub-modules are sanity checks explicitely listed in the
+`checks` variable. These test sub-modules are invariants that must be
+full-filled at any time. They are expected to always pass: obviously they must
+pass right after the module is installed, but they must also pass after any
+other module is installed, after a migration, or even after the database was
+put in production for a few months.
+"""
import test_orm
import test_ir_sequence
import test_xmlrpc
-# Explicit declaration list of test sub-modules.
-suite = [
+fast_suite = [
test_xmlrpc, # Creates a database
test_ir_sequence, # Assume an existing database
+ ]
+
+checks = [
test_orm, # Assume an existing database
]
=== modified file 'openerp/tests/common.py'
--- openerp/tests/common.py 2012-01-15 21:42:14 +0000
+++ openerp/tests/common.py 2012-02-28 09:27:24 +0000
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import os
import time
+import unittest2
import xmlrpclib
import openerp
@@ -16,15 +17,6 @@
ADMIN_USER_ID = 1
ADMIN_PASSWORD = 'admin'
-common_proxy_60 = None
-db_proxy_60 = None
-object_proxy_60 = None
-
-common_proxy_61 = None
-db_proxy_61 = None
-model_proxy_61 = None
-model_uri_61 = None
-
def start_openerp():
"""
Start the OpenERP server similary to the openerp-server script.
@@ -34,33 +26,52 @@
# Ugly way to ensure the server is listening.
time.sleep(2)
-def create_xmlrpc_proxies():
- """
- setup some xmlrpclib proxies.
- """
- global common_proxy_60
- global db_proxy_60
- global object_proxy_60
-
- # Use the old (pre 6.1) API.
- url = 'http://%s:%d/xmlrpc/' % (HOST, PORT)
- common_proxy_60 = xmlrpclib.ServerProxy(url + 'common')
- db_proxy_60 = xmlrpclib.ServerProxy(url + 'db')
- object_proxy_60 = xmlrpclib.ServerProxy(url + 'object')
-
- global common_proxy_61
- global db_proxy_61
- global model_proxy_61
- global model_uri_61
-
- # Use the new (6.1) API.
- model_uri_61 = 'http://%s:%d/openerp/xmlrpc/1/' % (HOST, PORT)
- common_proxy_61 = xmlrpclib.ServerProxy(model_uri_61 + 'common')
- db_proxy_61 = xmlrpclib.ServerProxy(model_uri_61 + 'db')
- model_proxy_61 = xmlrpclib.ServerProxy(model_uri_61 + 'model/' + DB)
-
-def tearDownModule():
- """ Shutdown the OpenERP server similarly to a single ctrl-c. """
+def stop_openerp():
+ """
+ Shutdown the OpenERP server similarly to a single ctrl-c.
+ """
openerp.service.stop_services()
+class TransactionCase(unittest2.TestCase):
+ """
+ Subclass of TestCase with a single transaction, rolled-back at the end of
+ the tests.
+ """
+
+ def __init__(self, name):
+ super(TransactionCase, self).__init__(name)
+ self.registry = lambda model: \
+ openerp.modules.registry.RegistryManager.get(DB)[model]
+
+ def setUp(self):
+ self.cr = openerp.modules.registry.RegistryManager.get(DB).db.cursor()
+
+ def tearDown(self):
+ self.cr.rollback()
+ self.cr.close()
+
+class RpcCase(unittest2.TestCase):
+ """
+ Subclass of TestCase with a few XML-RPC proxies.
+ """
+
+ def __init__(self, name):
+ super(RpcCase, self).__init__(name)
+
+ class A(object):
+ pass
+ self.proxy = A()
+
+ # Use the old (pre 6.1) API.
+ self.proxy.url_60 = url_60 = 'http://%s:%d/xmlrpc/' % (HOST, PORT)
+ self.proxy.common_60 = xmlrpclib.ServerProxy(url_60 + 'common')
+ self.proxy.db_60 = xmlrpclib.ServerProxy(url_60 + 'db')
+ self.proxy.object_60 = xmlrpclib.ServerProxy(url_60 + 'object')
+
+ # Use the new (6.1) API.
+ self.proxy.url_61 = url_61 = 'http://%s:%d/openerp/xmlrpc/1/' % (HOST, PORT)
+ self.proxy.common_61 = xmlrpclib.ServerProxy(url_61 + 'common')
+ self.proxy.db_61 = xmlrpclib.ServerProxy(url_61 + 'db')
+ self.proxy.model_61 = xmlrpclib.ServerProxy(url_61 + 'model/' + DB)
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== modified file 'openerp/tests/test_ir_sequence.py'
--- openerp/tests/test_ir_sequence.py 2012-01-15 21:42:14 +0000
+++ openerp/tests/test_ir_sequence.py 2012-02-28 09:27:24 +0000
@@ -16,11 +16,6 @@
DB = common.DB
ADMIN_USER_ID = common.ADMIN_USER_ID
-def setUpModule():
- common.create_xmlrpc_proxies()
-
-tearDownModule = common.tearDownModule
-
def registry(model):
return openerp.modules.registry.RegistryManager.get(DB)[model]
=== modified file 'openerp/tests/test_orm.py'
--- openerp/tests/test_orm.py 2011-12-01 14:00:12 +0000
+++ openerp/tests/test_orm.py 2012-02-28 09:27:24 +0000
@@ -2,9 +2,10 @@
import unittest2
import openerp
+import common
-UID = 1
-DB = openerp.tools.config['db_name']
+UID = common.ADMIN_USER_ID
+DB = common.DB
CREATE = lambda values: (0, False, values)
UPDATE = lambda id, values: (1, id, values)
@@ -14,16 +15,12 @@
DELETE_ALL = lambda: (5, False, False)
REPLACE_WITH = lambda ids: (6, False, ids)
-class TestO2MSerialization(unittest2.TestCase):
+class TestO2MSerialization(common.TransactionCase):
def setUp(self):
- self.cr = openerp.modules.registry.RegistryManager.get(DB).db.cursor()
- self.partner = openerp.modules.registry.RegistryManager.get(DB)['res.partner']
- self.address = openerp.modules.registry.RegistryManager.get(DB)['res.partner.address']
-
- def tearDown(self):
- self.cr.rollback()
- self.cr.close()
+ super(TestO2MSerialization, self).setUp()
+ self.partner = self.registry('res.partner')
+ self.address = self.registry('res.partner.address')
def test_no_command(self):
" empty list of commands yields an empty list of records "
=== modified file 'openerp/tests/test_xmlrpc.py'
--- openerp/tests/test_xmlrpc.py 2012-01-15 21:42:14 +0000
+++ openerp/tests/test_xmlrpc.py 2012-02-28 09:27:24 +0000
@@ -18,46 +18,44 @@
ADMIN_USER_ID = common.ADMIN_USER_ID
ADMIN_PASSWORD = common.ADMIN_PASSWORD
-def setUpModule():
- common.start_openerp()
- common.create_xmlrpc_proxies()
-
-tearDownModule = common.tearDownModule
-
-class test_xmlrpc(unittest2.TestCase):
+setUpModule = common.start_openerp
+
+tearDownModule = common.stop_openerp
+
+class test_xmlrpc(common.RpcCase):
def test_00_xmlrpc_create_database_polling(self):
"""
Simulate a OpenERP client requesting the creation of a database and
polling the server until the creation is complete.
"""
- progress_id = common.db_proxy_60.create(ADMIN_PASSWORD, DB, True,
+ progress_id = self.proxy.db_60.create(ADMIN_PASSWORD, DB, True,
False, ADMIN_PASSWORD)
while True:
time.sleep(1)
- progress, users = common.db_proxy_60.get_progress(ADMIN_PASSWORD,
+ progress, users = self.proxy.db_60.get_progress(ADMIN_PASSWORD,
progress_id)
if progress == 1.0:
break
def test_xmlrpc_login(self):
""" Try to login on the common service. """
- uid = common.common_proxy_60.login(DB, ADMIN_USER, ADMIN_PASSWORD)
+ uid = self.proxy.common_60.login(DB, ADMIN_USER, ADMIN_PASSWORD)
assert uid == ADMIN_USER_ID
def test_xmlrpc_ir_model_search(self):
""" Try a search on the object service. """
- ids = common.object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD,
+ ids = self.proxy.object_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD,
'ir.model', 'search', [])
assert ids
- ids = common.object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD,
+ ids = self.proxy.object_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD,
'ir.model', 'search', [], {})
assert ids
def test_xmlrpc_61_ir_model_search(self):
""" Try a search on the object service. """
- proxy = xmlrpclib.ServerProxy(common.model_uri_61 + 'model/' + DB + '/ir.model')
+ proxy = xmlrpclib.ServerProxy(self.proxy.url_61 + 'model/' + DB + '/ir.model')
ids = proxy.execute(ADMIN_USER_ID, ADMIN_PASSWORD, 'search', [])
assert ids
ids = proxy.execute(ADMIN_USER_ID, ADMIN_PASSWORD, 'search', [], {})
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp