在测试期间禁用套接字调用的pytest插件
pytest-socket的Python项目详细描述
与pytest一起使用的插件,用于在测试期间禁用或限制socket调用,以确保阻止网络调用。
这个Pytest插件是用Cookiecutter和@hackebrot的Cookiecutter-pytest-plugin模板生成的。
功能
- 禁用通过python的socket接口的所有网络调用。
要求
- Pytest3.6.3或更高版本
用法
运行pytest --disable-socket,对socket或使用 带有SocketBlockedError的套接字。
要将此标志添加为默认行为,请将此部分添加到您的pytest.ini或setup.cfg:
[pytest]addopts=--disable-socket
或者更新您的conftest.py以包含:
frompytest_socketimportdisable_socketdefpytest_runtest_setup():disable_socket()
要启用socket的特定测试,请将fixture传递给测试或使用标记:
deftest_explicitly_enable_socket(socket_enabled):assertsocket.socket(socket.AF_INET,socket.SOCK_STREAM)@pytest.mark.enable_socketdeftest_explicitly_enable_socket_with_mark():assertsocket.socket(socket.AF_INET,socket.SOCK_STREAM)
每次测试只允许特定主机:
@pytest.mark.allow_hosts(['127.0.0.1'])deftest_explicitly_enable_socket_with_mark():assertsocket.socket.connect(('127.0.0.1',80))
或整个测试运行
[pytest]addopts=--allow-hosts=127.0.0.1,127.0.1.1
贡献
我们非常欢迎您的贡献。测试可以用tox运行,请确保 在提交请求之前,覆盖范围至少保持不变。
许可证
“pytest socket”是根据MIT许可证的条款发布的免费开源软件
问题
如果您遇到任何问题,请file an issue连同详细说明。
参考文献
这个插件是由@hangtwenty解决StackOverflow question问题而产生的, 然后由@miketheman转换为pytest插件。