2017-12-25 15 views
1

Ich bin erfolgreich ssh-key Docker Runner gesetzt und es kann git clone Abhängigkeiten Installation tun.Docker Läufer pytest sammelt keine Testfälle

Wenn ich gewöhnliches eingebautes python manage.py test verwende, funktioniert es gut. Aber ich arbeite jetzt mit pytest. Ich kann pytest auf der Kommandozeile laufen und bekam Ergebnisse normal.

$ pytest 
===================================================================================== test session starts ===================================================================================== 
platform darwin -- Python 3.6.4, pytest-3.2.5, py-1.5.2, pluggy-0.4.0 
Django settings: poinkbackend.config.settings.local (from ini file) 
rootdir: /Users/sarit/Code/poink, inifile: pytest.ini 
plugins: django-3.1.2 
collected 66 items 

poinkbackend/apps/activities/tests.py .. 
poinkbackend/apps/amendments/tests.py ........ 
poinkbackend/apps/branches/tests.py .... 
poinkbackend/apps/company_perms/tests.py ...... 
poinkbackend/apps/news/tests.py ...... 
poinkbackend/apps/orders/tests.py ..... 
poinkbackend/apps/poinks/tests.py . 
poinkbackend/apps/redemptions/tests.py ..s.... 
poinkbackend/apps/rewards/tests.py .. 
poinkbackend/apps/roles/tests.py ........ 
poinkbackend/apps/userprofiles/tests.py ............ss... 

Aber wenn ich in der gitlab-ci ausführen. Ich benutze docker als runner.
Update 1:
Ich bestätige. Ich habe pytest.ini im obersten Verzeichnis. pytest.ini:

[pytest] 
DJANGO_SETTINGS_MODULE = poinkbackend.config.settings.local 
python_files = tests.py test_*.py *_tests.py 



Successfully built django-dirtyfields django-reversion django-s3-folder-storage olefile simplegeneric 
Installing collected packages: django-geoposition, pytz, django, py-moneyed, django-money, appnope, jmespath, six, python-dateutil, docutils, botocore, s3transfer, boto3, certifi, chardet, django-storages, collectfast, decorator, django-choices, django-cors-headers, django-countries, sqlparse, django-debug-toolbar, django-dirtyfields, django-environ, typing, django-extensions, django-filter, django-guardian, django-reversion, django-s3-folder-storage, pyjwt, djangorestframework-jwt, djangorestframework, freezegun, greenlet, gevent, gunicorn, idna, ipython-genutils, pygments, simplegeneric, pickleshare, ptyprocess, pexpect, traitlets, wcwidth, prompt-toolkit, parso, jedi, ipython, model-mommy, olefile, pillow, psycopg2, py, pytest, pytest-django, urllib3, requests, rest-framework-generic-relations, werkzeug 
    Running setup.py develop for django-geoposition 
    Running setup.py develop for django-money 
Successfully installed appnope-0.1.0 boto3-1.4.7 botocore-1.7.47 certifi-2017.11.5 chardet-3.0.4 collectfast-0.5.2 decorator-4.1.2 django-1.11.7 django-choices-1.6.0 django-cors-headers-2.1.0 django-countries-5.0 django-debug-toolbar-1.9.1 django-dirtyfields-1.3 django-environ-0.4.4 django-extensions-1.9.7 django-filter-1.1.0 django-geoposition django-guardian-1.4.9 django-money django-reversion-2.0.10 django-s3-folder-storage-0.5 django-storages-1.6.5 djangorestframework-3.7.3 djangorestframework-jwt-1.11.0 docutils-0.14 freezegun-0.3.9 gevent-1.2.2 greenlet-0.4.12 gunicorn-19.7.1 idna-2.6 ipython-6.2.1 ipython-genutils-0.2.0 jedi-0.11.0 jmespath-0.9.3 model-mommy-1.4.0 olefile-0.44 parso-0.1.0 pexpect-4.3.0 pickleshare-0.7.4 pillow-4.3.0 prompt-toolkit-1.0.15 psycopg2-2.7.3.2 ptyprocess-0.5.2 py-1.5.2 py-moneyed-0.7.0 pygments-2.2.0 pyjwt-1.5.3 pytest-3.2.5 pytest-django-3.1.2 python-dateutil-2.6.1 pytz-2017.3 requests-2.18.4 rest-framework-generic-relations-1.1.0 s3transfer-0.1.11 simplegeneric-0.8.1 six-1.11.0 sqlparse-0.2.4 traitlets-4.3.2 typing-3.6.2 urllib3-1.22 wcwidth-0.1.7 werkzeug-0.12.2 
$ pwd 
/builds/sarit/poink 
$ ls 
DockerFileBackend 
README.md 
delete_migrations.sh 
docker-compose.yml 
f2 
frontend 
manage.py 
poinkbackend 
pytest.ini 
renew_db.sh 
requirements.in 
requirements.txt 
src 
static 
static_files 
test_gitlab.sh 
$ pytest 
============================= test session starts ============================== 
platform linux -- Python 3.6.4, pytest-3.2.5, py-1.5.2, pluggy-0.4.0 
Django settings: poinkbackend.config.settings.local (from ini file) 
rootdir: /builds/sarit/poink, inifile: pytest.ini 
plugins: django-3.1.2 
collected 0 items/1 errors 

==================================== ERRORS ==================================== 
______________________________ ERROR collecting _______________________________ 
/usr/local/lib/python3.6/site-packages/_pytest/config.py:342: in _getconftestmodules 
    return self._path2confmods[path] 
E KeyError: local('/builds/sarit/poink/src/django-money/tests') 

During handling of the above exception, another exception occurred: 
/usr/local/lib/python3.6/site-packages/_pytest/config.py:373: in _importconftest 
    return self._conftestpath2mod[conftestpath] 
E KeyError: local('/builds/sarit/poink/src/django-money/tests/conftest.py') 

During handling of the above exception, another exception occurred: 
/usr/local/lib/python3.6/site-packages/_pytest/config.py:379: in _importconftest 
    mod = conftestpath.pyimport() 
/usr/local/lib/python3.6/site-packages/py/_path/local.py:668: in pyimport 
    __import__(modname) 
<frozen importlib._bootstrap>:971: in _find_and_load 
    ??? 
<frozen importlib._bootstrap>:955: in _find_and_load_unlocked 
    ??? 
<frozen importlib._bootstrap>:656: in _load_unlocked 
    ??? 
<frozen importlib._bootstrap>:626: in _load_backward_compatible 
    ??? 
/usr/local/lib/python3.6/site-packages/_pytest/assertion/rewrite.py:212: in load_module 
    py.builtin.exec_(co, mod.__dict__) 
src/django-money/tests/conftest.py:9: in <module> 
    from tests.testapp.models import InheritorModel, ModelWithDefaultAsInt 
src/django-money/tests/testapp/models.py:21: in <module> 
    class ModelWithVanillaMoneyField(models.Model): 
/usr/local/lib/python3.6/site-packages/django/db/models/base.py:118: in __new__ 
    "INSTALLED_APPS." % (module, name) 
E RuntimeError: Model class tests.testapp.models.ModelWithVanillaMoneyField doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS. 

During handling of the above exception, another exception occurred: 
/usr/local/lib/python3.6/site-packages/py/_path/common.py:377: in visit 
    for x in Visitor(fil, rec, ignore, bf, sort).gen(self): 
/usr/local/lib/python3.6/site-packages/py/_path/common.py:429: in gen 
    for p in self.gen(subdir): 
/usr/local/lib/python3.6/site-packages/py/_path/common.py:429: in gen 
    for p in self.gen(subdir): 
/usr/local/lib/python3.6/site-packages/py/_path/common.py:418: in gen 
    dirs = self.optsort([p for p in entries 
/usr/local/lib/python3.6/site-packages/py/_path/common.py:419: in <listcomp> 
    if p.check(dir=1) and (rec is None or rec(p))]) 
/usr/local/lib/python3.6/site-packages/_pytest/main.py:737: in _recurse 
    ihook = self.gethookproxy(path) 
/usr/local/lib/python3.6/site-packages/_pytest/main.py:641: in gethookproxy 
    my_conftestmodules = pm._getconftestmodules(fspath) 
/usr/local/lib/python3.6/site-packages/_pytest/config.py:356: in _getconftestmodules 
    mod = self._importconftest(conftestpath) 
/usr/local/lib/python3.6/site-packages/_pytest/config.py:381: in _importconftest 
    raise ConftestImportFailure(conftestpath, sys.exc_info()) 
E _pytest.config.ConftestImportFailure: RuntimeError("Model class tests.testapp.models.ModelWithVanillaMoneyField doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.",) 
E  File "<frozen importlib._bootstrap>", line 971, in _find_and_load 
E  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked 
E  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked 
E  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible 
E  File "/usr/local/lib/python3.6/site-packages/_pytest/assertion/rewrite.py", line 212, in load_module 
E  py.builtin.exec_(co, mod.__dict__) 
E  File "/builds/sarit/poink/src/django-money/tests/conftest.py", line 9, in <module> 
E  from tests.testapp.models import InheritorModel, ModelWithDefaultAsInt 
E  File "/builds/sarit/poink/src/django-money/tests/testapp/models.py", line 21, in <module> 
E  class ModelWithVanillaMoneyField(models.Model): 
E  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 118, in __new__ 
E  "INSTALLED_APPS." % (module, name) 
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!! 
=========================== 1 error in 0.57 seconds ============================ 
ERROR: Job failed: exit code 1 

.gitlab-ci.yml

image: python:3.6 
services: 
    - postgres:latest 

variables: 
    POSTGRES_DB: poinkdb 
    POSTGRES_USER: postgres 
    POSTGRES_PASSWORD: postgres 

before_script: 
    - 'which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)' 
    - eval $(ssh-agent -s) 
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null 
    - mkdir -p ~/.ssh 
    - chmod 700 ~/.ssh 
    - ssh-keyscan github.com >> ~/.ssh/known_hosts 
    - chmod 644 ~/.ssh/known_hosts 
    - git config --global user.email "[email protected]" 
    - git config --global user.name "sarit" 
    - python -V 
    - pip install -r requirements.txt 

test: 
    tags: 
    - poink 
    - Elcolie 
    variables: 
    DATABASE_URL : "postgres://postgres:[email protected]:5432/poinkdb" 
    script: 
    - pytest 

Fragen:
Update2:
Update3:

  1. Wie funktioniert gitlab-ci run pytest mit docker runner?
+0

ich jetzt debuggen, indem Sie das 'ls, pwd,' zum 'script' bin erstellen, aber ich habe Gebäude warten Bild für 5 Minuten! – Sarit

Antwort

1

Dank https://github.com/nicoddemus

Sein Zitat auf meine Frage auf letzte Zeile zeigen Sie mir den /src, die nicht mein Verzeichnis ist. Es wurde auf dem Weg erstellt.

Mein pitfall ist runner Python-Abhängigkeiten in /src nicht in den anderen versteckten Verzeichnissen

[pytest] 
DJANGO_SETTINGS_MODULE = poinkbackend.config.settings.local 
python_files = tests.py test_*.py *_tests.py 
norecursedirs = src 
Verwandte Themen