python自动化接口测试中urllib.parse的使用
首先要知道, urllib.parse 是用来做什么的?
看名字,url , parse, 所以,urllib.parse 定义了url 的标准接口, 实现了url 的各种抽取,解析, 合并,编码, 解码。
另外,官方定义如是:这个模块是一个能把URL字符串拆分成组件,能把组件合并成URL和将一个相对的URL转成一个抽象的URL,从而的到一个基本的URL标准格式。
简单的说就是可以拆分URL,也可以拼接URL,他支持的URL格式为:file、ftp、gopher、hdl、http、https、imap、mailto,mms、news、nntp、prospero、rsync、rtsp、rtspu、sftp、shttp、sip、sips、snews、svn、svn+ssh、telnet、wais、ws、wss。
这个模块默认分为两个类别,URL parsing(URL解析) 和 URL quoting(URL引用)
(一)、URL parsing(URL解析)
urllib.parse.urlparse(urlstring, scheme=”, allow_fragments=True) : urlparse 函数用于将一个URL 解析成六个部分,返回一个元组。
这里有两点需要学习:URL 按照什么格式或者规则进行解析 & 函数后面的括号中的参数为空的时候如何解析。
首先:URL的标准格式有六个部分: scheme://netloc/path;parameters?query#fragment
这个格式是需要记住的(标点符号 // / ; ? # )(Key 的名字:scheme, netloc, path, parameters, query, fragment)
然后既然返回的是一个元组,那就可以通过 index 来访问这些值。
元组中每一个元素都是一个字符串,可以为空,这六个部分均不能再被分割成更小的部分;
以下为返回的元组元素:
示例如下:
分析URL中的query 组件的函数有两个,根据需要取用不同的函数:
urllib.parse.
parse_qs
(qs, keep_blank_values=False, strict_parsing=False, encoding=’utf-8’, errors=’replace’)
urllib.parse.
parse_qsl
(qs, keep_blank_values=False, strict_parsing=False, encoding=’utf-8’, errors=’replace’)
第一个返回的是字典 dict,第二个返回的是列表 list.
如下:
urllib.parse.
urlsplit
(urlstring, scheme=”, allow_fragments=True): 这个函数跟urllib.parse.urlparse() 功能类似,唯一的不同是这个函数不会将 URL 中的param分离出来,就是说urlparse()少一个param 元素,返回的元组元素参照urlparse() 元组表,少了一个param 元素。
urllib.parse.
urljoin
(base, url, allow_fragments=True) : urljoin函数用于将 基本的URL(base), 和其他的 URL拼成一个完整的URL。