经过大量的研究,我没有找到任何现成的方法让pytest在OS级隔离和一次性环境中运行项目测试。许多方法都是可行的,并且各有利弊,但大多数方法都有更多的移动部件,我会对此感到满意。
我设计的绝对最小(但有根据)方法如下:
- 用以下命令构建一个python docker映像:
- 专门的非root用户:
pytest
- 来自的所有项目依赖项
requirements.txt
- 以开发模式安装的项目
- 专门的非root用户:
- 在将项目文件夹作为
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)