I have my DevOps pipeline which is using pytest to execute unit tests found in Python code.
I'm using a root folder called "core" for the main python functionality, and reference it using the following format:
import unittest
from core.objects.paragraph import Paragraph
from core.objects.sentence import Sentence
Running this locally (python -m pytest) works correctly and executes all of the tests.
However, everytime I run this from Azure DevOps I get the error message:
ModuleNotFoundError: No module named 'core'
I have no idea why this is happening 🤷♂️🤷♂️🤷♂️
For reference, this is my YAML build definition
trigger:
- main
pool:
vmImage: ubuntu-latest
strategy:
matrix:
Python310:
python.version: '3.10.7'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'
displayName: 'Use Python $(python.version)'
- script: |
python -m pip install --upgrade pip
pip install -r requirements.txt
displayName: 'Install dependencies'
- script: |
pip install pytest pytest-azurepipelines
displayName: 'Install pytest'
- script: |
python -m pytest --junitxml=$(Build.StagingDirectory)/Testoutput.xml
workingDirectory: 'tests'
displayName: 'Test with PyTest'
Once the execution has finished, this is the error message I'm seeing:
____________ ERROR collecting test_objects/test_paragraph_object.py ____________
ImportError while importing test module '/home/vsts/work/1/s/tests/test_objects/test_paragraph_object.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.10.7/x64/lib/python3.10/importlib/__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
test_objects/test_paragraph_object.py:2: in <module>
from core.objects.paragraph import Paragraph
E ModuleNotFoundError: No module named 'core'
------------ generated xml file: /home/vsts/work/1/a/Testoutput.xml ------------