微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pytest 不适用于 Django 和 Docker - AssertionError: local('/dev/console') is not a file

如何解决Pytest 不适用于 Django 和 Docker - AssertionError: local('/dev/console') is not a file

我在 Docker 中运行一个 Django 应用程序,一切正常,但是当我尝试运行测试时,它失败了,错误非常模糊。

运行docker-compose run djangoapp coverage run -m pytest 结果:

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,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

解决方法

pytest 递归遍历,docker 中的默认工作目录为 /。结合这些...设置直接正确工作!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?