前言

使用 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:\python36\lib\site-packages\urllib3\connectionpool.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.disable_warnings()' 不生效,主要是小伙伴门对 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参数了

pytest文档46-关于https请求警告问题(InsecureRequestWarning: Unverified HTTPS request is being made)的更多相关文章

  1. pytest文档3-pycharm运行pytest

    前言 上一篇pytest文档2-用例运行规则已经介绍了如何在cmd执行pytest用例,平常我们写代码在pycharm比较多 写完用例之后,需要调试看看,是不是能正常运行,如果每次跑去cmd执行,太麻 ...

  2. pytest文档7-pytest-html生成html报告

    前言 pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告.兼容Python 2.7,3.6 pytest-html 1.github上源码地址[https://github. ...

  3. InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.解决办法

    最近使用requests进行get请求的时候,控制台输出如下错误. InsecureRequestWarning: Unverified HTTPS request is being made. Ad ...

  4. 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 In

    InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is s ...

  5. pytest文档19-doctest测试框架

    前言 doctest从字面意思上看,那就是文档测试.doctest是python里面自带的一个模块,它实际上是单元测试的一种. 官方解释:doctest 模块会搜索那些看起来像交互式会话的 Pytho ...

  6. pytest文档1-环境准备与入门

    前言 首先说下为什么要学pytest,在此之前相信大家已经掌握了python里面的unittest单元测试框架,那再学一个框架肯定是需要学习时间成本的. 刚开始我的内心是拒绝的,我想我用unittes ...

  7. pytest文档56-插件打包上传到 pypi 库

    前言 pytest 的插件完成之后,可以上传到 github,方便其他小伙伴通过 pip 源码安装.如果我们想通过 pip install packages 这种方式安装的话,需上传到 pypi 仓库 ...

  8. pytest文档55-plugins插件开发

    前言 前面一篇已经学会了使用hook函数改变pytest运行的结果,代码写在conftest.py文件,实际上就是本地的插件了. 当有一天你公司的小伙伴觉得你写的还不错,或者更多的小伙伴想要你这个功能 ...

  9. pytest文档51-内置fixture之cache使用

    前言 pytest 运行完用例之后会生成一个 .pytest_cache 的缓存文件夹,用于记录用例的ids和上一次失败的用例. 方便我们在运行用例的时候加上--lf 和 --ff 参数,快速运行上一 ...

随机推荐

  1. C#中TextBox设置readonly不能读取数据问题

    在ASP.NET中前端设置控件TextBox的属性为Readonly="True"时,如果之前有设定初始值,或通过JS方式给其赋值后,在后台访问其Text值却无法获取,这种问题的解 ...

  2. 一些免费的API

    Github 接口 Github 为我们提供了一些免费的 API 接口,利用这些接口我们可以开发一些工具. 接口文档地址为 https://docs.github.com/en/rest 下面是一个例 ...

  3. Dubbo必须会的知识点

    前言 应用架构演变: 单一架构ORM:单机构建网站,是一个高内聚版本,所有功能部署在一起.通过一个容器和JSP/Servlet技术或通过一些开源的框架如SSM以及SSH,通过数据库管理系统来存储数据. ...

  4. 项目初始化CSS公共样式

    /*! normalize.css v6.0.0 | MIT License | github.com/necolas/normalize.css */ /* Document =========== ...

  5. netty之pipeline

    转载自https://blog.csdn.net/zxhoo/article/details/17264263 Netty4学习笔记(1)-- ChannelPipeline Netty4Netty是 ...

  6. Java Web学习(六)HttpServletRequest(客户端请求)

    一.定义 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有 ...

  7. kafka面试总结

    本文为复习期间面试总结 从以下方面对kafka面试进行总结:基本原理架构/项目实践/生产者/消费者/协调者/存储层/控制器 基本原理架构 简单讲下什么是kafka[一句话概括/架构图] 消息队列选型 ...

  8. Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件

    本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...

  9. MySQL5.7用户创建及权限管理

    一 用户.权限管理 1.1 用户 作用: 登录,管理数据库逻辑对象 定义: 用户名@'主机值' 主机值可以是主机名或IP地址,主机值中允许使用通配符 root@'10.0.0.%' root@'%' ...

  10. Java基于POI实现excel任意多级联动下拉列表——支持从数据库查询出多级数据后直接生成【附源码】

     Excel相关知识点 (1)名称管理器--Name Manager [CoderBaby]首先需要创建多个名称(包含key及value),作为下拉列表的数据源,后续通过名称引用.可通过菜单:&quo ...