InsecureRequestWarning + pytest

Ric*_*o79 4 python ssl pytest

我仍然有关于 pytest 摘要的 SSL 警告。
Python 2.7.5
requests==2.22.0
urllib3==1.25.3
pytest version 4.3.1

这是代码:

import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

def test_x():
  response = requests.get("https:// ...",
                          verify=False)
  print response.text
Run Code Online (Sandbox Code Playgroud)

输出pytest mytest.py

....    
==================================================== warnings summary ====================================================
prova.py::test_x
  /usr/lib/python2.7/site-packages/urllib3/connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
    InsecureRequestWarning)

-- Docs: https://docs.pytest.org/en/latest/warnings.html
========================================== 1 passed, 1 warnings in 0.30 seconds ==========================================
Run Code Online (Sandbox Code Playgroud)

如何从 pytest 中删除 SSL 警告?

hoe*_*ing 8

重申评论:您只能通过重新打开 SSL 证书验证来删除它。但是,您可以隐藏它(因此仍会发出警告,但不会显示在警告部分中):

选定的测试

通过警告类将 pytest.mark.filterwarnings 标记应用于测试:

@pytest.mark.filterwarnings('ignore::urllib3.exceptions.InsecureRequestWarning')
def test_example_com():
    requests.get('https://www.example.com', verify=False)
Run Code Online (Sandbox Code Playgroud)

或通过警告消息:

@pytest.mark.filterwarnings('ignore:Unverified HTTPS request is being made.*')
def test_example_com():
    requests.get('https://www.example.com', verify=False)
Run Code Online (Sandbox Code Playgroud)

(所不同的是在单或双冒号之间ignore::ignore:)。

完整的测试套件

配置filterwarningspytest.ini,也无论是警示类:

[pytest]
filterwarnings =
    ignore::urllib3.exceptions.InsecureRequestWarning
Run Code Online (Sandbox Code Playgroud)

或通过警告消息:

[pytest]
filterwarnings =
    ignore:Unverified HTTPS request is being made.*
Run Code Online (Sandbox Code Playgroud)