接口自动化(8):接口测试过程中出现报错SSLError: certificate verify failed
前言
上网发现接口自动化有时候会遇到SSLError: certificate verify failed发现很有意思于是记录下来
代码
import urllib.request
weburl = "https://www.douban.com/"
webheader = {
'Accept': 'text/html, application/xhtml+xml, */*',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',
}
req = urllib.request.Request(url=weburl, headers=webheader)
webPage = urllib.request.urlopen(req)
data = webPage.read().decode('utf-8')
报错信息
python实现自动化接口请求中,当使用urllib.urlopen打开一个 https 链接时,会验证一次 SSL 证书。而当目标网站使用的是自签名的证书时就会抛出此异常:
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
修改
requests.get(url, params=None, verify=False)
requests.post(url, data=None, json=None, verify=False)
另一个问题
当我们按照上述的方法修改后,会衍生出另一个问题(我们测试通过了,但是使用有一条警告显示,最终生成的测试报告也不美观,如下图 )
解决办法
我们可以在封装的requests模块下加入如下代码
import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
再次执行测试用例后,生成了美观的测试报告