Trying to launch tests on specific module: python -m unittest discover -s trytond.modules.stock.tests
I’m getting this error:
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/usr/lib/python3.12/unittest/__main__.py", line 18, in <module>
main(module=None)
File "/usr/lib/python3.12/unittest/main.py", line 104, in __init__
self.parseArgs(argv)
File "/usr/lib/python3.12/unittest/main.py", line 130, in parseArgs
self._do_discovery(argv[2:])
File "/usr/lib/python3.12/unittest/main.py", line 253, in _do_discovery
self.createTests(from_discovery=True, Loader=Loader)
File "/usr/lib/python3.12/unittest/main.py", line 160, in createTests
self.test = loader.discover(self.start, self.pattern, self.top)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/unittest/loader.py", line 307, in discover
raise ImportError('Start directory is not importable: %r' % start_dir)
ImportError: Start directory is not importable: 'trytond.trytond.modules.stock.tests'
╰─ python -m unittest discover -s trytond.modules.stock.tests
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/usr/lib/python3.12/unittest/__main__.py", line 18, in <module>
main(module=None)
File "/usr/lib/python3.12/unittest/main.py", line 104, in __init__
self.parseArgs(argv)
File "/usr/lib/python3.12/unittest/main.py", line 130, in parseArgs
self._do_discovery(argv[2:])
File "/usr/lib/python3.12/unittest/main.py", line 253, in _do_discovery
self.createTests(from_discovery=True, Loader=Loader)
File "/usr/lib/python3.12/unittest/main.py", line 160, in createTests
self.test = loader.discover(self.start, self.pattern, self.top)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/unittest/loader.py", line 307, in discover
raise ImportError('Start directory is not importable: %r' % start_dir)
ImportError: Start directory is not importable: 'trytond.modules.stock.tests'
So it looks like trytond is not importable. If you can not do import trytond.modules.stock.tests in your python console, it is normal that the tests can not be run.
Try launching the tests from the trytond directory.
Launching from the root of the repo result in the first trytond directory being considered as a Namespace. I haven’t looked yet what has changed between 3.11 and 3.12 so that it has this effect.
Indeed in Python 3.11 the toplevel directory can be imported as <module 'trytond' (<_frozen_importlib_external.NamespaceLoader object at 0x7fbd9afc1110>)>.
For me having a PYTHONPATH=trytond import the right file from the top directory of the repository.