2015-04-15 19 views
41

Posso eseguire test di unità del mio componente aggiuntivo OpenERP v7 come descritto here.Esegui OpenERP 7 unittests in PyCharm

In PyCharm l'ho fatto con l'aggiunta di una configurazione di Python in Run/Debug Configurazione come segue:

Script:

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

Scrittura parametri:

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

Esso viene eseguito correttamente, ma mostra un output standard in formato log di testo simile al seguente:

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 

dove mostra i risultati di eseguire il seguente test che ho creato in add-on my_addon progetto 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() 

Quello che voglio è quello di utilizzare i test Python -> configurazione unittest per visualizzare l'output test con/icone rosse e interfaccia PyCharm per i risultati delle prove.

PyCharm unittest config

configurazione unittest richiede il file di script in cui si trovano le prove, se a specificare il file, PyCharm trova tutti i test nel file, ma dà errori perché il database (e di altri parametri come openerp-server sceneggiatura e dei parametri di riposo specificato in precedenza per eseguire test OpenERP) non è configurato:

PyCharm unittest results

questo è il risultato dell'esecuzione di questa configurazione:

01.235.164,106174 millions
/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 

Quindi, come specificare i parametri richiesti per eseguire OpenERP v7 unittest con una configurazione di prova PyCharm?

ho usato PyCharm 4.0.6 Build # PY-139,1659, ma lo fa anche senza opere in PyCharm 5.

+1

Penso che sarebbe utile se si aggiunge esattamente ciò che i messaggi di errore che hai, anche un bene per specificare quale versione di PyCharm che stai utilizzando. Per esempio la documentazione per la configurazione di PyCharm 4.0.4 è qui https://www.jetbrains.com/pycharm/help/run-debug-configuration-python-unit-test.html#d388270e118 Come un pensiero rapido, non lo faccio pensare che la connessione al database sia qualcosa che devi configurare all'interno di PyCharm, e cosa intendi con "altri parametri" non è chiaro neanche. Potresti iniziare a far cadere i voti se non li chiarisci. – rineez

+0

Grazie, ho aggiunto informazioni rilevanti per chiarirlo – juliocesar

+0

Sei stato in grado di risolvere da solo? – rineez

risposta

1

nella finestra Esegui/debug fatto si imposta il valore del campo di directory di lavoro corrente per /home/juliocesar/work/projects/my_project ? Ciò aiuterebbe PyCharm a cercare i percorsi relativi e le importazioni.

Puoi anche provare a dare il percorso completo ai tuoi add-on nell'elenco degli argomenti.

+0

Ho impostato questo percorso, ma penso che il problema non riguardi i percorsi (trova moduli e funzioni), il problema è specificare l'esecuzione dello script 'openerp-server' e specificare i suoi parametri come' database', 'db_user', etc – juliocesar

1

è possibile eseguire il debug usando cmd in Windows entrare con cmd nella odoo.exe cartella C: \ Program Files (x86) \ vudù 8,0-20.150.719 \ server ed eseguire il comando

odoo --log-level=debug 

o terminale in Linux entrare con terminale nella lima odoo.py (/ usr/bin /) ed eseguire questo comando

python odoo.py --log-level=debug 

nastro ctrl + Z o cTRL + C per disattivarlo un log.

troverete un file (OpenERP-server.log) in/var/log/vudù/