在测试期间禁用套接字调用的pytest插件

pytest-socket的Python项目详细描述


https://img.shields.io/pypi/v/pytest-socket.svghttps://img.shields.io/pypi/pyversions/pytest-socket.svgSee Build Status on Travis CISee Build Status on AppVeyorMaintainability

与pytest一起使用的插件,用于在测试期间禁用或限制socket调用,以确保阻止网络调用。


这个Pytest插件是用Cookiecutter@hackebrotCookiecutter-pytest-plugin模板生成的。

功能

  • 禁用通过python的socket接口的所有网络调用。

要求

安装

您可以通过PyPI中的pip安装“pytest socket”:

$ pip install pytest-socket

用法

  • 运行pytest --disable-socket,对socket或使用 带有SocketBlockedError的套接字。

    要将此标志添加为默认行为,请将此部分添加到您的pytest.inisetup.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插件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java泛型和基类   ProcessBuilder或DefaultExecutor启动的“RunAs”子进程的java读取标准输出   java应用程序在尝试登录时突然停止   Java:神秘的Java未捕获异常处理程序[带代码]   java JavaFX NumberAxis自动范围无限循环   最新版本和旧版本冲突的java双Maven依赖关系   java如何导入带有部署变量类名的静态函数?   编译器构造不同的JDK更新会产生不同的Java字节码吗?   java无法在struts 1.1中上载任何超过250 MB大小的文件   java调整jcombobox下拉菜单的宽度   java如何在某些情况下忽略@SQLDelete注释   在Eclipse for Java EE developers edition中禁用HTML警告   java HttpUrlConnection重置请求属性   java@Provider资源未在rest应用程序中注册   java TOP N使用JPA连接   java在使用反射调用方法时区分int和Integer参数