小编ale*_*ici的帖子

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

我有兴趣在某种沙盒中使用pytest执行可能不受信任的测试,比如docker,类似于持续集成服务.

我理解为了正确沙箱化一个python进程你需要操作系统级别的隔离,比如在一次性chroot /容器中运行测试,但在我的用例中,我不需要防止故意恶意代码,只是来自配对的危险行为带参数的"随机"函数.因此,较不严格的沙箱仍然可以接受.但我没有找到任何能够实现任何形式沙盒的插件.

沙盘测试在pytest中执行的最佳方法是什么?

更新:这个问题是不是在一般的蟒蛇沙盒作为测试代码由pytest运行,我不能改变它执行使用方式execast或什么的.不幸的是,使用pypy-sandbox也不是一个选项,因为根据PyPy功能页面它只是"原型" .

更新2:pytest-dev邮件列表中的Hoger Krekel 建议使用专用的testuser通过pytest-xdist进行用户级隔离:

py.test --tx ssh=OTHERUSER@localhost --dist=each
Run Code Online (Sandbox Code Playgroud)

让我意识到我的CI用例:

具有"一次性"环境与具有隔离的环境一样重要,因此每个测试或每个会话都从相同的初始状态运行,并且不会受到testuser可写入的文件夹上旧的会话可能留下的影响(/ home/testuser,/ tmp,/ var/tmp等).

因此testuser + xdist接近于解决方案,但并不完全存在.

只是为了上下文我需要隔离来运行pytest-nodev.

python testing unit-testing pytest docker

4
推荐指数
1
解决办法
1218
查看次数

标签 统计

docker ×1

pytest ×1

python ×1

testing ×1

unit-testing ×1