我仍然有关于 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 警告?
重申评论:您只能通过重新打开 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:)。
配置filterwarnings中pytest.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)