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

目录

  • API自动化——requests
    • requests方法
    • 响应信息
  • 正则提取
  • JSON提取

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")

你可能感兴趣的:(python,自动化,开发语言,1024程序员节)