7
votes

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?

1
Maybe try installing/reinstalling 'pydevd'? File -> Settings -> Project:.... -> Project Interpreter -> '+' -> pydevd -> Install Packagenanotek

1 Answers

5
votes

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.