pytest文档46-关于https请求警告问题
前言
使用 pytest 执行 https 请求用例的时候,控制台会出现警告:InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. 当出现这个警告的时候,我们第一反应是加忽略警告:urllib3.disable_warnings(),然而并不管用。
问题描述
使用requests库发https请求,添加verify=False忽略证书
# test_https.py
import requests
import urllib3
urllib3.disable_warnings()
def test_h():
'''
author: 上海-悠悠 QQ交流群:779429633
blog: https://www.cnblogs.com/yoyoketang
:return:
'''
url = "https://www.cnblogs.com/yoyoketang"
s = requests.session()
s.verify = False
r = s.get(url)
assert "上海-悠悠" in r.text
命令行使用pytest运行用例
D:demo>pytest test_https.py
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-4.5.0, py-1.5.4, pluggy-0.13.1
rootdir: D:demo
plugins: allure-pytest-2.8.6
collected 1 item
test_https.py . [100%]
============================== warnings summary ===============================
test_https.py::test_h
e:python36libsite-packagesurllib3connectionpool.py:858: 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.35 seconds =====================
这时候会出现 InsecureRequestWarning 警告,去百度搜都是上加上这句
urllib3.disable_warnings()
然而你会发现不管用
问题分析
出现这个问题,并不是因为 ‘urllib3.disablewarnings()’ 不生效,主要是小伙伴门对 pytest 的运行规则不熟悉,pytest 框架运行的时候会查找test.py文件下的test_()函数或方法的用例
也就是只会执行 test_h()
下面的代码,所以根本就不会执行它上面的代码,可以试试换个位置,放到test_h() 以下,就会生效
import requests
import urllib3
# urllib3.disable_warnings()
def test_h():
'''
author: 上海-悠悠 QQ交流群:779429633
blog: https://www.cnblogs.com/yoyoketang
:return:
'''
urllib3.disable_warnings() # 换个位置
url = "https://www.cnblogs.com/yoyoketang"
s = requests.session()
s.verify = False
r = s.get(url)
assert "上海-悠悠" in r.text
再次运行 pytest test_https.py
警告就没有了
warnings 文档
上面的警告内容有个doc文档地址Docs: https://docs.pytest.org/en/latest/warnings.html,点开查询解决方案
文档上有对于警告出现的详细描述,在命令行添加--disable-warnings
参数忽略警告
pytest test_https.py —disable-warnings
D:demo>pytest test_https.py --disable-warnings
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-4.5.0, py-1.5.4, pluggy-0.13.1
rootdir: D:demo
plugins: allure-pytest-2.8.6
collected 1 item
test_https.py . [100%]
==================== 1 passed, 1 warnings in 0.24 seconds =====================
虽然警告内容没有了,但是警告还是会显示:1 passed, 1 warnings
也许你想彻底的不想看到warnings,可以不加载 warnings 插件,使用-p参数忽略插件加载
-p name early-load given plugin module name or entry point
(multi-allowed). To avoid loading of plugins, use the
`no:` prefix, e.g. `no:doctest`.
带上 -p 参数运行
pytest test_https.py -p no:warnings
D:demo>pytest test_https.py -p no:warnings
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-4.5.0, py-1.5.4, pluggy-0.13.1
rootdir: D:demo
plugins: allure-pytest-2.8.6
collected 1 item
test_https.py . [100%]
========================== 1 passed in 0.29 seconds ===========================
现在可以看到运行结果里面完全没有 warnings 字样了
可以在项目根目录放一个pytest.ini文件,内容如下
[pytest]
addopts = -p no:warnings
这样使用命令行执行的时候,就可以不用每次都带-p参数了
- Single Number and Single Number II
- 前端限制上传文件的类型
- JavaSript模块规范 - AMD规范与CMD规范介绍
- [大数据之Sqoop] —— Sqoop初探
- [大数据之Sqoop] —— 什么是Sqoop?
- Node.js包管理器Yarn的入门介绍与安装
- static_cast ,reinterpret_cast
- NodeJS使用formidable实现文件上传
- 签下北方最大港口,聚焦无人驾驶卡车技术的主线科技朝商业化又进一步
- 对缓存的思考——提高命中率
- 实用手册:130+ 提高开发效率的 vim 常用命令
- Sqoop切分数据的思想概况
- 设计模式分类
- 初识NodeJS
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- hostguest nativelangsys及uniform cui cross compile system
- 写好 JS 条件语句的 5 条守则
- Python元组中元素怎么删除和修改?
- Jupyter 插件太好用了
- 华为提出十大数学挑战!解出一个就是年薪百万!
- 一道 Google 的面试题
- 生产实践 | 基于 Flink 的短视频生产消费监控
- 图数据库调研
- Swift 类构造器的使用
- 「网络IO套路」当时就靠它追到女友
- 起个简单枯燥的标题:找出连续差相同的数字
- 10分钟带你搞懂代理模式、静态代理、JDK+CGLIB动态代理
- 握草!某程序员竟然在深夜偷偷在代码里下毒!
- 自然资源部贡献的Landuse数据(2000、2010、2020)
- LoRa节点开发——SDK整体设计思路