Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't debug unittests in Pycharm

I'm having trouble debugging unit tests in pycharm. I can run them fine with my configuration but when I run the debugger I get the following error output:

Error
Traceback (most recent call last):
  File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
    yield
  File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/case.py", line 605, in run
    testMethod()
  File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 34, in testFailure
    raise self._exception
ImportError: Failed to import test module: tests
Traceback (most recent call last):
  File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 462, in _find_test_path
    package = self._get_module_from_name(name)
  File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 369, in _get_module_from_name
    __import__(name)
  File "/Users/paymahn/solvvy/scheduler/tests/__init__.py", line 2, in 
    import tests.test_setup_script
  File "/Users/paymahn/solvvy/scheduler/tests/test_setup_script.py", line 3, in 
    import setup
  File "/Applications/PyCharm.app/Contents/helpers/pydev/setup.py", line 87, in 
    data_files.append(('pydevd_attach_to_process', [os.path.join('pydevd_attach_to_process', f) for f in os.listdir('pydevd_attach_to_process') if accept_file(f)]))
FileNotFoundError: [Errno 2] No such file or directory: 'pydevd_attach_to_process'

My directory structure is:

enter image description here

My unittest configuration is:

enter image description here

tests/test_setup_script.py looks like:

import unittest
import os
import setup # the path to this file is scheduler/setup.py. This import may be breaking things


class TestSetupScript(unittest.TestCase):


    def test_load_db_connection_valid_yaml_file(self):
        file_name = "valid-yaml.yml"
        with open(file_name, 'w') as file:
            file.write("""
            test:
                hello world
                a = b
                """)

        yaml = setup.load_yaml_configuration(file_name)
        # I want to debug the line above, hence no assertions here

What does pydevd_attach_to_process do and how can I make sure it's found during debugging? Is the problem not actually related to that file/directory being found?

like image 424
Paymahn Moghadasian Avatar asked Feb 23 '18 17:02

Paymahn Moghadasian


People also ask

Where is PyCharm debug egg?

pycharm-debug. egg file is located in root of your PyCharm installation directory. Copy it to the remote host and add it to Python path. And that's all!


1 Answers

Indeed, the failure occurs because the "import setup" in your code imports the setup module which is part of PyCharm's debugger runtime instead of your own setup module. The easiest fix to this is to rename your setup.py file to something else and to update the imports in your code accordingly.

like image 121
yole Avatar answered Sep 28 '22 00:09

yole