前言
小编最近在编写接口自动化测试用例的过程中,需要将get请求url中的部分参数替换成预设的数据,将url中的具有时效性的auth替换成auth生成方法返回值。经过一番调研,最后选取了python的urllib库的parse模块。
urllib.parse 模块提供了一系列用于操纵 URLs 地址及其各组成部分的函数,这些函数或者用于拆分或者用于组装。
urllib.parse函数介绍
分析:
1.ulrparse()
函数的返回值是一个 ParseResult 对象,该对象与含有六个元素的元组 tuple 类似。
urllib_parse_urlparse.py
from urllib.parse import urlparse
url = 'http://test.dis.e.sogou/adlist?offset=0&auth=69CF80EA062863279B72612FA5443B6F&requestId=0025500016111592878436805&count=1&network=1'
parsed = urlparse(url)
print(parsed)
可以通过元组索引的方式获取的 URL 地址的六个部分为:方案 (scheme) ,网址 (network location) ,路径 (path) ,路径段 (path segment) 参数(用分号与路径隔开),查询字符串 (query) 和片段 (fragment) 。
python3 urllib_parse_urlparse.py
ParseResult(scheme='http', netloc='test.dis.e.sogou', path='/adlist', params='', query='offset=0&auth=69CF80EA062863279B72612FA5443B6F&requestId=0025500016111592878436805&count=5&model=2&terminal=3&network=1', fragment='')
2.urlsplit()
urlsplit() 函数可以作为 urlparse() 的一个替代选择,但不会拆分 URL 里的参数。
逆解析:
1.geturl()
要把拆分后的 URL 的各部分重新组装回去,得到一个完整 URL 字符串的方法不止有一种。解析后的 URL 对象有一个 geturl() 方法。
urllib_parse_geturl.py
from urllib.parse import urlparse