首页 > 编程问答 >docker 中的 Pytest 运行 venv 文件的测试

docker 中的 Pytest 运行 venv 文件的测试

时间:2024-07-27 15:29:26浏览次数:6  
标签:python docker pytest fastapi

我正在关注 https://testdriven.io/courses/tdd-fastapi/pytest-setup/ ,但是当第一次运行

docker-compose exec web python -m pytest

时,我得到

collected 212 items / 24 errors

而不是预期的0个项目.

简短的测试摘要信息显示在其他中

ERROR env/Lib/site-packages/h11/tests/test_against_stdlib_http.py
ERROR env/Lib/site-packages/h11/tests/test_connection.py
ERROR env/Lib/site-packages/h11/tests/test_events.py
ERROR env/Lib/site-packages/h11/tests/test_headers.py

所以我相信项目中的 env 文件夹正在复制到容器中,但是我的 .dockerignore 文件存在于包含以下四行的项目中:

env
.dockerignore
Dockerfile
Dockerfile.prod

我提交我目前的进展 GitHub Repo 如果你想看一下。

有人知道我做错了什么吗?


看起来问题不在于你的 .dockerignore 文件,而在于你的 docker-compose.yml 文件。你在挂载代码时使用了 volumes ,它将你的本地目录(包括 env 文件夹)覆盖了容器中的内容。

你有两个选择:

1. 排除 volumes 中的 env 文件夹:

你可以修改你的 docker-compose.yml 文件,明确排除 env 文件夹,像这样:

yaml volumes: - ./app:/app:ro - /app/env # 排除 env 文件夹

这将确保你的本地 env 文件夹不会被挂载到容器中,并且 pytest 将使用容器内创建的虚拟环境。

2. 使用 .dockerignore 文件:

如果你想保留当前的 volumes 设置,你可以更新你的 .dockerignore 文件,使其在构建镜像时排除 env 文件夹。将 .dockerignore 文件的内容修改为:

env .dockerignore Dockerfile*

这将确保 env 文件夹不会包含在构建上下文中,并且不会复制到容器中。

选择任何一种方法都可以解决你的问题。建议使用第一种方法,因为它更明确地说明了你的意图,并且可以防止将来出现类似的问题。

标签:python,docker,pytest,fastapi
From: 76598322

相关文章

  • 如何运行从我正在编写的另一个 Python 脚本获取命令行参数的 Python 脚本?
    我有一个python3脚本,如下所示:...defmain():parser=argparse.ArgumentParser(description='Performnormalisationchecksonpass2files')parser.add_argument('-p','--parser',action='store',help='parse......
  • Python 抓取 urllib2 HTTP 错误
    我正在尝试抓取一个网站,但我的代码仅在我打开该网站然后刷新它时才有效。我尝试了多种方法,但不断出现以下两个错误:第一个:ValueError:“HTTPError:HTTP错误416:请求的范围无法满足”urlslist=open("list_urls.txt").read()urlslist=urlslist.split("\n")forurlslistinurl......
  • 【Python】利用 face_recognition 库进行人脸检测识别【附完整示例】
    1.背景条件1.1安装所需库首先安装face_recognition和Pillow这两个库。您可以使用以下命令来安装它们:pipinstallface_recognitionPillow-ihttps://pypi.tuna.tsinghua.edu.cn/simple1.2拷贝代码安装完成后,您就可以在本地运行以下提供的代码了。importfac......
  • 太强了,Python+Excel真的是神仙组合!
    本书是由流行开源Python库xlwings的创始人:费利克斯·朱姆斯坦(FelixZumstein)所撰写。他详细阐述了如何将Python与Excel结合使用,让任务自动化,从而实现效率飞跃。为了帮助初学者克服对Python的恐惧,作者特意将教程内容设计成从简单到复杂的顺序进行介绍。这本书PDF共282页,分为4个......
  • 在 Python 中获取精确的 Android GPS 位置
    我尝试在Python中获取Android手机的GPS位置(使用QPython3应用程序)。这种可行,但是Android中似乎有几个LocationProvider:gps:纯gps定位,速度慢,耗能,但非常准确,正是我所需要的。网络:GPS和wifi/小区定位的混合,更快,但不太准确被动......
  • Dockers 部署Nodejs环境的ts 项目遇到的问题
    Dockers部署Nodejs环境的ts项目遇到的问题由于不熟悉TS和nodejs所以过程比较曲折。webpack.config\tsconfig.json\package.json\是几个比较关键的文件。细节可以去看详细文档,这里不展开讲;主要是缺失了start.sh文件和执行npmrunbuild的时候报错问题;遇到报错时,请用最新的AI,......
  • 使用 docker run 将 Python 单击选项传递给 ENTRYPOINT 会出现错误:“在 $PATH 中找不
    我有一个简单的python脚本,我想在docker容器内运行它。它打印一行消息“Hello{name}”。python脚本使用clickCLI界面来定义收件人名称,如果我直接运行它(不使用dockerrun命令),它将如下所示:pythonhello.py-nSmithDockerbuild命令:dockerbuild.-thello:1.......
  • 在 FastAPI 中更改来自 MySQL 的数据类型输入
    我的这一行有“serialize_response”错误:@app.get("/get-sensors/",response_model=List[Data])和这个:return{"status":"success","list":data}我该如何解决这个问题!我想获取字典类型的数据为了解决在FastAPI中更改来自MySQL的数据类型输入时遇到的......
  • 标题:在 OpenSees Python 中定义具有特定卸载行为的双线性弹塑性材料
    我正在使用Python中的OpenSees,我想定义一种在负载下表现出双线性弹塑性行为的材料。但是,我需要在卸载过程中将材质返回到其原始位置,遵循准确的加载路径。在此处输入图像描述我不确定如何在OpenSees中正确实现卸载行为,我正在寻找实现这一具体材料反应的指导。......
  • 使用正则表达式删除Python中常见的公司名称后缀
    我正在努力删除一些公司名称中的后缀。预期结果如下:原始名称:AppleInc.SonyCorporationFiatChryslerAutomobilesS.p.A.SamsungElectronicsCo.,Ltd.清除名称:AppleSonyFiatChryslerAutomobilesSamsungElectronics到目前为止我所做的:importred......