gpt4 book ai didi

python - 在 Dockerfile 中运行 py.test

转载 作者:行者123 更新时间:2023-12-02 11:16:57 25 4
gpt4 key购买 nike

我有这个 Dockerfile 包含一行 RUN py.test -vv

FROM bitnami/python:3.6-prod
#MORE DIRECTIVES
RUN py.test -vv
COPY . /files
WORKDIR /files
EXPOSE 8080

当我运行 docker-compose build 时,出现此错误。
Step 16/21 : RUN py.test -vv
---> Running in 5b3f55f10025
============================= test session starts ==============================
platform linux -- Python 3.6.9, pytest-5.2.1, py-1.8.0, pluggy-0.13.0 -- /opt/bitnami/python/bin/python
cachedir: .pytest_cache
rootdir: /
plugins: ordering-0.6, cov-2.8.1, docker-compose-3.1.2, celery-4.3.0
collecting ... collected 0 items / 1 errors

==================================== ERRORS ====================================
________________________ ERROR collecting test session _________________________
opt/bitnami/python/lib/python3.6/site-packages/_pytest/config/__init__.py:456: in _importconftest
return self._conftestpath2mod[key]
E KeyError: PosixPath('/opt/bitnami/python/lib/python3.6/site-packages/matplotlib/tests/conftest.py')

During handling of the above exception, another exception occurred:
opt/bitnami/python/lib/python3.6/site-packages/_pytest/config/__init__.py:462: in _importconftest
mod = conftestpath.pyimport()
opt/bitnami/python/lib/python3.6/site-packages/py/_path/local.py:701: in pyimport
__import__(modname)
opt/bitnami/python/lib/python3.6/site-packages/matplotlib/tests/__init__.py:16: in <module>
'The baseline image directory does not exist. '
E OSError: The baseline image directory does not exist. This is most likely because the test data is not installed. You may need to install matplotlib from source to get the test data.

During handling of the above exception, another exception occurred:
opt/bitnami/python/lib/python3.6/site-packages/py/_path/common.py:377: in visit
for x in Visitor(fil, rec, ignore, bf, sort).gen(self):
opt/bitnami/python/lib/python3.6/site-packages/py/_path/common.py:429: in gen
for p in self.gen(subdir):
opt/bitnami/python/lib/python3.6/site-packages/py/_path/common.py:429: in gen
for p in self.gen(subdir):
opt/bitnami/python/lib/python3.6/site-packages/py/_path/common.py:429: in gen
for p in self.gen(subdir):
opt/bitnami/python/lib/python3.6/site-packages/py/_path/common.py:429: in gen
for p in self.gen(subdir):
opt/bitnami/python/lib/python3.6/site-packages/py/_path/common.py:429: in gen
for p in self.gen(subdir):
opt/bitnami/python/lib/python3.6/site-packages/py/_path/common.py:429: in gen
for p in self.gen(subdir):
opt/bitnami/python/lib/python3.6/site-packages/py/_path/common.py:429: in gen
for p in self.gen(subdir):
opt/bitnami/python/lib/python3.6/site-packages/py/_path/common.py:418: in gen
dirs = self.optsort([p for p in entries
opt/bitnami/python/lib/python3.6/site-packages/py/_path/common.py:419: in <listcomp>
if p.check(dir=1) and (rec is None or rec(p))])
opt/bitnami/python/lib/python3.6/site-packages/_pytest/main.py:606: in _recurse
ihook = self.gethookproxy(dirpath)
opt/bitnami/python/lib/python3.6/site-packages/_pytest/main.py:424: in gethookproxy
my_conftestmodules = pm._getconftestmodules(fspath)
opt/bitnami/python/lib/python3.6/site-packages/_pytest/config/__init__.py:434: in _getconftestmodules
mod = self._importconftest(conftestpath)
opt/bitnami/python/lib/python3.6/site-packages/_pytest/config/__init__.py:470: in _importconftest
raise ConftestImportFailure(conftestpath, sys.exc_info())
E _pytest.config.ConftestImportFailure: (local('/opt/bitnami/python/lib/python3.6/site-packages/matplotlib/tests/conftest.py'), (<class 'OSError'>, OSError('The baseline image directory does not exist. This is most likely because the test data is not installed. You may need to install matplotlib from source to get the test data.',), <traceback object at 0x7f814caaef88>))
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!
============================== 1 error in 11.83s ===============================
ERROR: Service 'testproject' failed to build: The command '/bin/sh -c py.test -vv' returned a non-zero code: 2

我尝试在 Dockerfile 中添加 pip install matplotlib 但我仍然遇到相同的错误。

我之前有一个 NodeJS 应用程序,它也是 Dockerized,它使用 mocha 对其进行了一些测试,并将 RUN mocha 放在 Dockerfile 中工作正常。我不确定 Python 中的问题是什么。

最佳答案

我觉得这里的问题是因为pytest没有预装在python中。因此,您必须在 docker 容器中添加 pytest 安装步骤。就我个人而言,我一直通过使用单独的 dockerfile 来运行 pytest,它用于安装和设置 ENTRYPOINT 为 pytest。

我已附上 docker-compose.yaml、dockerfile 和 pytest.dockerfile 供您引用。或者,您可以直接在 .yaml 文件/dockerfile 中提及 pytest 安装步骤,因为您没有要添加任何其他服务并避免额外的 dockerfile。这个设置非常适合我使用 docker 容器运行 Selenium-pytest 测试自动化。请试试这个,让我们知道反馈。

version: '3.7'
services:
test:
volumes:
- .:/files
build:
context: .
dockerfile: pytest.dockerfile

docker-compose.yaml
FROM python:3.7-alpine
MAINTAINER xyz

ADD . /files
WORKDIR /files

ENV PYTHONDONTWRITEBYTECODE=true
EXPOSE 4444

码头文件。
公开端口的选项在这里也是可选的。
FROM python:3.7-alpine
MAINTAINER xyz

RUN pip install pytest

ENTRYPOINT [ "pytest" ]

pytest.dockerfile

关于python - 在 Dockerfile 中运行 py.test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58264907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com