简体   繁体   中英

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配置

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结果

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.

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/

In the run/debug window did you set the value of the current working directory field to /home/juliocesar/work/projects/my_project ? This would help PyCharm to look for the relative paths as well as the imports.

You can also try giving full path to your addons in the argument list.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM