栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

有没有办法用pytest沙箱测试执行,尤其是文件系统访问?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有没有办法用pytest沙箱测试执行,尤其是文件系统访问?

经过大量的研究,我没有找到任何现成的方法让pytest在操作系统级别的隔离下以及在一次性环境中运行项目测试。许多方法都是可行的,并且各有利弊,但是大多数方法都有更多的移动部件,我会对此感到满意。

我设计的绝对最小(但有根据)方法如下:

  • 用以下命令构建一个python docker映像:
    • 专用的非root用户:
      pytest
    • 来自的所有项目依赖项
      requirements.txt
    • 以开发模式安装的项目
  • 在将项目文件夹作为
    pytest
    用户的主目录挂载在主机上的容器中运行py.test

要实现该方法,请将以下内容添加

Dockerfile
到要测试的项目的顶部文件夹中,并在
requirements.txt
setup.py
文件旁边:

FROM python:3# setup pytest userRUN adduser --disabled-password --gecos "" --uid 7357 pytestCOPY ./ /home/pytestWORKDIR /home/pytest# setup the python and pytest environmentsRUN pip install --upgrade pip setuptools pytestRUN pip install --upgrade -r requirements.txtRUN python setup.py develop# setup entry pointUSER pytestENTRYPOINT ["py.test"]

使用以下方法一次构建映像:

docker build -t pytest .

在将项目文件夹作为卷安装在/ home / pytest上的容器中运行py.test,方法是:

docker run --rm -it -v `pwd`:/home/pytest pytest [USUAL_PYTEST_OPTIONS]

请注意,

-v
将卷挂载为uid 1000,因此pytest用户无法将主机文件写入,并且uid强制设置为7357。

现在,您应该能够使用操作系统级别的隔离来开发和测试您的项目。

更新: 如果您还在主机上运行测试,则可能需要删除容器内不可写的python和pytest缓存。在主机上运行:

rm -rf .cache/ && find . -name __pycache__  | xargs rm -rf


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373217.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号