gitlab-ci.yml: 'script: -pytest не может найти тесты для проверки' - PullRequest
1 голос
/ 02 октября 2019

У меня проблемы с реализацией игрушечного примера, который запускает pytest в .gitlab-ci.yml

gitlab_ci - это репозиторий, содержащий один файл test_hello.py

gitlab_ci/
    test_hello.py

test_hello.py

# test_hello.py

import pytest

def hello():
    print("hello")

def hello_test():
    assert hello() == 'hello'


.gitlab-ci.yml

# .gitlab-ci.yml

pytest:
  image: python:3.6
  script:
    - apt-get update -q -y
    - pip install pytest
    - pytest # if this is removed, the job outputs 'Success'

CI / CD терминалвывод

$ pytest
=== test session starts ===
platform linux -- Python 3.6.9, pytest-5.2.0, py-1.8.0, pluggy-0.13.0
rootdir: /builds/kunov/gitlab_ci
collected 0 items

=== no tests ran in 0.02s ===
ERROR: Job failed: exit code 1

Я не уверен, почему тест не был запущен ... pytest, похоже, не распознает test_hello.py


Решение

Поместите файл python в только что созданную папку tests :

gitlab_ci/
    .gitlab-ci.yml
    tests/
        test_hello.py

Измените gitlab-ci.yml следующим образом:

# .gitlab-ci.yml

pytest:
  image: python:3.6
  script:
  - apt-get update -q -y
  - pip install pytest
  - pwd
  - ls -l
  - export PYTHONPATH="$PYTHONPATH:."
  - python -c "import sys;print(sys.path)"
  - pytest


И test_hello.py останется прежним.

1 Ответ

0 голосов
/ 02 октября 2019

В этом сообщении в блоге упоминается похожий конвейер, но:

Однако это не сработало, так как pytest не смог найти модуль 'bild' (т.е. источниккод) для проверки.
Проблема, с которой здесь сталкиваются, заключается в том, что модуль 'bild' не может быть найден файлами test_*.py, так как каталог верхнего уровня проекта не указывается в системном пути:

pytest:
  stage: Test
  script:
  - pwd
  - ls -l
  - export PYTHONPATH="$PYTHONPATH:."
  - python -c "import sys;print(sys.path)"
  - pytest

ОП кунов подтверждает в комментариях :

Работает сейчас! Я поместил один файл во вновь созданную папку с именем 'test'

...