Pytest not working with Django and Docker - AssertionError: local('/dev/console') is not a file

Viewed 1493

I'm running a Django application in Docker and everything works fine but when I try try to run tests it fails with quite ambiguous error.

running docker-compose run djangoapp coverage run -m pytest result:

Creating djangoapp_run ... done                                                         ================================================= test session starts ==================================================
platform linux -- Python 3.8.5, pytest-6.2.1, py-1.10.0, pluggy-0.13.1
rootdir: /
collected 0 items / 1 error

======================================================== ERRORS ========================================================
____________________________________________ ERROR collecting test session _____________________________________________
usr/local/lib/python3.8/dist-packages/_pytest/runner.py:311: in from_call
    result: Optional[TResult] = func()
usr/local/lib/python3.8/dist-packages/_pytest/runner.py:341: in <lambda>
    call = CallInfo.from_call(lambda: list(collector.collect()), "collect")
usr/local/lib/python3.8/dist-packages/_pytest/main.py:710: in collect
    for x in self._collectfile(path):
usr/local/lib/python3.8/dist-packages/_pytest/main.py:546: in _collectfile
    assert (
E   AssertionError: local('/dev/console') is not a file (isdir=False, exists=True, islink=False)
=============================================== short test summary info ================================================
ERROR  - AssertionError: local('/dev/console') is not a file (isdir=False, exists=True, islink=False)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
=================================================== 1 error in 0.33s ===================================================

docker-compose:

version: '3'

services:
  djangoapp:
    build: .
    container_name: djangoapp
    ports:
      - '8000:80'
      - '1433:1433'
    volumes: 
      - ./djangoapp:/var/www/html/djangoapp
    environment:
      - PYTHONUNBUFFERED=0
1 Answers

pytest traverses recursively and default working directory in docker is /. To combine these... Set working directly correctly!

...
    environment:
      - PYTHONUNBUFFERED=0
    working_dir: /var/www/html/djangoapp
...
Related