【软件测试】Python自动化 requests基础

API自动化——requests

requests方法

delete、get、head、patch、post、put、request
get:re_1=requests.get(url,params,**kwargs)
post:re_2=requests.post(url,data,json,**kwargs)
request:re_3=requests.request(method,url,**kwargs)

响应信息

调用 requests 请求之后,会返回一个 response 对象

方法/属性说明
apparent_encoding编码方式
content返回响应的内容,以字节为单位
cookies返回cookies信息
elapsed返回timedelta对象,包含从改善请求到响应到达经过的时间
encoding解码
headers返回响应头
is_permanent_redirect判断响应是否是永久重定向的url
is_redirect判断响应是否重定向
json()返回json对象(结果需要以json格式编写)
reason响应状态的描述,如“Not Found”或“OK”
request返回请求此响应的请求对象
status_code返回http状态码
text返回响应的内容,unicode类型数据
url返回响应的url

例:

import requests

url='http://www.test.com'
datas={
"username":"admin",
"userpswd":"admin"
}
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

s=requests.session()
response=s.request(post,url,data=datas,headers=headers)
res=response.text

正则提取

re模块,提供Perl风格的正则表达式模式

  • re.match
    从字符串的起始位置匹配一个模式,若匹配不成功,则返回None
    语法:re.match(pattern,string,flags)

  • re.search
    匹配整个字符串,直到找到一个匹配并返回匹配的第一个,否则返回None
    语法:re.search(pattern,string,flags)

参数/方法说明
pattern要匹配的正则表达式
string要匹配的字符串
flags标志位,用于控制匹配方式,如:区分大小写
start()匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0
end()匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0
span()返回匹配成功子串在字符串中位置 (start(group), end(group))
group(num=0)可一次输入多个组号,返回一个包含这些组所对应值的元组
groups()返回一个包含所有小组字符串的元组
import re
str_='Hello World Wide Web'
x=re.search(r'([a-z]+) ([a-z]+)',str_,re.I) # re.I忽略大小写
print(x.group(1))
print(x.group(2))
print(x.groups())
  • findall
    在字符串中找到匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表
import re
res=re.findall(r"(.*)",string)
print(res[0])

  • finditer
    和 findall 类似,匹配结果作为一个迭代器返回
import re
# 匹配结果作为一个迭代器返回
it=re.finditer(r".+",string)
for match in it:
	print(match.group())
  • compile函数
    用于编译正则表达式,生成一个正则表达式( Pattern )对象
import re
pattern=re.compile(r'\d+')
# 从头部开始匹配,无结果,返回None
m=pattern.match('one12twothree34four')
# 从'1'开始匹配,至'w'结束
m=pattern.match('one12twothree34four',3,7)
m1=pattern.search('one12twothree34four',3,7)
m2=pattern.findall('one12twothree34four',3,7) # 返回list

print(m.group(0)) # 0可省略,返回12
# 匹配的子串在整个字符串中的起始位置(子串第一个字符的索引)
print(m.start(0)) # 返回 3
# 匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1)
print(m.end()) # 返回 5
print(m.span()) # 返回 (3,5)
print(m2[0]) # 返回12

JSON提取

安装:pip install jsonpath

JsonPath说明
$.data.moive[*].date获取所有电影的日期
$..actor获取所有演员
$.data.*$.data[*]获取data的所有元素
$.data..price获取所有的价格
$..movice[1]获取第2个电影的所有信息
$..movice[0:1]获取前2个电影的所有信息
$..movice[?(@.price>38)].name获取价格大于38的电影名
$..movice[?(@.actor=='成龙' && @.price<38)]获取演员为成龙且价格低于38的电影信息
$..movice[?(@.price in [18,25])]获取价格是18、25的电影信息
import jsonpath
# 绝对路径提取
value=jsonpath.jsonpath(json_data,"$.data[movice]")
# 相对路径提取
value_=jsonpath.jsonpath(json_data,"$..movice")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值