#python #github #yaml #pytest #github-actions
Вопрос:
Я учусь реализовывать автоматическое тестирование с помощью действий на GitHub. Я пытаюсь решить следующую ошибку импорта.
Ошибка в том, что:
utilstest_capitalize.py:2: in <module>
from src.capital import capital_case
E ModuleNotFoundError: No module named 'src'
Структура моего репозитория такова:
example/
|-- setup.cfg
|-- setup.py
|-- pyproject.toml
|-- .github/
| |-- workflows/
| | |-- ci.yml
|-- src/
| |-- capital.py
|-- utils/
| |-- test_capitalize.py
Содержание ci.yml
является:
name: ci
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build-and-test:
runs-on: windows-latest
strategy:
matrix:
python-version: [3.8]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Build
run: |
python -m pip install .
python -m pip install src
- name: Test with pytest
run: |
python -m pip install pytest
pytest
Я думал, что python -m pip install .
уже установил все модули в репозитории, у меня есть неправильное представление об этом?.
Редактировать: Файл pytest является минимальным примером (я попытался удалить src перед нажатием):
import pytest
from src.capital import capital_case
def test_capital_case():
assert capital_case('semaphore') == 'Semaphore'
Комментарии:
1. Вы никогда не должны иметь
src
в своих входных инструкциях. Это должно бытьfrom capital import capital_case
в коде. Удалите такжеpython -m pip install src
строкуci.yml
, строка над ней является правильной для использования.2. В таком случае у меня все та же проблема. Сообщение об ошибке выглядит так
ModuleNotFoundError: No module named 'capital'
3. Я предполагаю, что этого нет в списке setup.py. Добавьте py_modules=[‘capital’] в вызове настройки.
4. Да, это было причиной проблемы, спасибо