Run OpenERP 7 unittests in PyCharm

I can run unit tests of my OpenERP v7 add-on as described here.

In PyCharm I did it by adding a Python configuration in Run/Debug Configuration as follows:

Script:

/home/juliocesar/work/projects/my_project/openerp-server

Script parameters:

--addons-path=openerp/addons,openerp/addons/my_addons
--log-level=test
--database=my_project_db_test
--db_host=localhost
--db_user=test
--db_password=123
--init=my_addon
--test-enable
--stop-after-init

It runs successfully but shows a standard output in text log format like the following:

2015-04-24 13:47:55,101 12340 TEST my_project openerp.modules.module: module my_addon: executing 1 `fast_suite` and/or `checks` sub-modules
2015-04-24 13:47:55,101 12340 TEST my_project openerp.modules.module: test_change_old_received_to_contingency (openerp.addons.my_addon.tests.test_my_addon.TestMyItems)
2015-04-24 13:47:55,101 12340 TEST my_project openerp.modules.module: ` Test patch to change old received status to contingency.
2015-04-24 13:47:55,110 12340 TEST my_project openerp.modules.module: Ran 1 tests in 0.006s
2015-04-24 13:47:55,110 12340 TEST my_project openerp.modules.module: OK

where it shows the results of run the following test I created in add-on my_addon of project my_project, in /home/juliocesar/work/projects/my_project/openerp/addons/my_addon/tests/test_my_addon.py:

from openerp.tests.common import TransactionCase
import unittest2

class TestMyItems(TransactionCase):

    def test_change_old_received_to_contingency(self):
        """Test patch to change old received status to contingency."""
        self.assertTrue(True)

if __name__ == '__main__':
    unittest2.main()

What I want is to use Python tests -> Unittest configuration to display tests output with red/green icons and PyCharm interface for tests results.

PyCharm unittest config

Unittest configuration requires the script file where tests are located, if I specify the file, PyCharm finds all tests in the file but gives errors because the database (and other parameters like openerp-server script and the rest parameters specified in above to run OpenERP tests) is not configured:

PyCharm unittest results

This is the result of running this configuration:

/usr/bin/python2.7 /home/juliocesar/apps/pycharm/helpers/pycharm/utrunner.py /home/juliocesar/work/projects/my_project/openerp/addons/my_addon/tests/ false
Testing started at 09:38 AM ...
No handlers could be found for logger "openerp.sql_db"

Process finished with exit code 0

Error
Traceback (most recent call last):
  File "/home/juliocesar/work/projects/my_project/openerp/tests/common.py", line 94, in setUp
    TransactionCase.cr = self.cursor()
  File "/home/juliocesar/work/projects/my_project/openerp/tests/common.py", line 55, in cursor
    return openerp.modules.registry.RegistryManager.get(DB).db.cursor()
  File "/home/juliocesar/work/projects/my_project/openerp/modules/registry.py", line 193, in get
    update_module)
  File "/home/juliocesar/work/projects/my_project/openerp/modules/registry.py", line 209, in new
    registry = Registry(db_name)
  File "/home/juliocesar/work/projects/my_project/openerp/modules/registry.py", line 76, in __init__
    cr = self.db.cursor()
  File "/home/juliocesar/work/projects/my_project/openerp/sql_db.py", line 484, in cursor
    return Cursor(self._pool, self.dbname, serialized=serialized)
  File "/home/juliocesar/work/projects/my_project/openerp/sql_db.py", line 182, in __init__
    self._cnx = pool.borrow(dsn(dbname))
  File "/home/juliocesar/work/projects/my_project/openerp/sql_db.py", line 377, in _locked
    return fun(self, *args, **kwargs)
  File "/home/juliocesar/work/projects/my_project/openerp/sql_db.py", line 440, in borrow
    result = psycopg2.connect(dsn=dsn, connection_factory=PsycoConnection)
  File "/usr/lib/python2.7/dist-packages/psycopg2/__init__.py", line 179, in connect
    connection_factory=connection_factory, async=async)
OperationalError: FATAL:  database "False" does not exist

So, how to specify the required parameters to run OpenERP v7 unittest with a PyCharm test configuration?

I used PyCharm 4.0.6 Build #PY-139.1659, but it also doesn’t works in PyCharm 5.

Answer

You can debug using cmd in windows enter with cmd into odoo.exe folder C:\Program Files (x86)\Odoo 8.0-20150719\server and execute this command

odoo --log-level=debug

or terminal in Linux enter with terminal into odoo.py file (/usr/bin/) and execute this command

python odoo.py --log-level=debug

tape ctrl+z or ctrl+c to desactivate a log .

You will find a file (openerp-server.log) in /var/log/odoo/

Attribution
Source : Link , Question Author : juliocesar , Answer Author : Bhavesh Odedra

Leave a Comment