gpt4 book ai didi

python - 在 Travis 上阻止测试/进程的网络访问?

转载 作者:行者123 更新时间:2023-12-04 14:37:43 25 4
gpt4 key购买 nike

基于 this question及其答案:在 Travis CI 上阻止测试或进程的网络访问的适用方法是什么(如果有的话)?

背景:我想测试离线功能,即缓存,能够在没有互联网/网络访问的情况下使用库。该过程中涉及的依赖项(第三方软件)尝试连接到 Internet/网络。目前,我正在设法禁止其互联网/网络访问(通过“拔掉插头”在本地确认),但我想找到一种方法来实现适当的 CI 测试以进行长期维护。大多数测试基础设施都是用 Python 编写的,并基于 pytest。

最佳答案

您的 Travis 作业在功能齐全的 Linux 环境中运行,其中包括使用 iptables 创建防火墙规则的能力。命令。考虑这个非常简单 .travis.yml文件:

---
script:
- curl http://icanhazip.com

把它放在一个存储库中并运行它,它会工作得很好:
$ curl http://icanhazip.com
104.196.57.92
The command "curl http://icanhazip.com" exited with 0.

为了模拟离线行为,我们只需添加一个防火墙规则来阻止端口 80 上的出站访问:
---
script:
- sudo iptables -A OUTPUT -p tcp --dport 80 -j REJECT
- curl http://icanhazip.com

这将失败:
$ curl http://icanhazip.com
curl: (7) Failed to connect to icanhazip.com port 80: Connection refused
The command "curl http://icanhazip.com" exited with 7.

关于python - 在 Travis 上阻止测试/进程的网络访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59361120/

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