I have the following directory structure:
├── project
│ ├── modules
│ │ ├── __init__.py.py
│ │ ├── module.py
│ ├── main.py
├── tests
│ ├── test_main.py
where module.py
is:
class My_Class(object):
def __init__(self):
raise Exception("This is a test exception")
and main.py
is:
import asyncio
from modules.module import My_Class
async def main():
my_class = My_Class()
if __name__ == "__main__":
asyncio.run(main())
I am trying to write test_main.py
such that My_Class()
is patched so that the exception is not raised when running the test.
This is what I have now:
import pytest
from unittest.mock import patch
from project.main import main
@pytest.mark.asyncio
@patch("project.modules.module.My_Class")
async def test_main(mock_my_class):
await main()
But I'm hitting this import error:
ImportError while importing test module 'C:\Users\me\OneDrive\Desktop\deleteme\tests\test_main.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\lib\importlib\__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
tests\test_main.py:4: in <module>
from project.main import main
project\main.py:3: in <module>
from modules.module import My_Class
E ModuleNotFoundError: No module named 'modules'