另一篇文章:自动化测试框架(pytest)&附学习视频
说明:
1紧跟着写的不加/,不加空格-表示同一级别信息,加空格表示后代
2.css定位tag,id,class时分别有不同的标识,其他属性都要加[]进行搜索,
Xpath所有属性都要都加【】,tag不用
3. css在使用tag,id,class定位时可以不写全信息,其他要写全
4.//用在xpath 空格用在css
5.xpath 写属性时,前面一定要加标签,或者是* //*[@id=‘west’]>
6. //div/button[1] xpath的1就是list的0
对软件系统消息交互接口的测试,叫接口测试。链接
内部接口: 产品(也就是被测系统) 内部子系统之间 的接口。
外部接口:产品(也就是被测系统)和 另外的系统交互的接口。
浏览器,F12可以查看http请求消息,http响应消息。
Requests 库 是用来发送HTTP请求,接收HTTP响应的一个Python库。
当软件运行时,发送的http请求会经过fiddler,关闭软件,恢复正常
根据下面的这种测试接口文档的要求,我们利用requests库进行http的请求,看服务器是否返回我们的需求。
大量工作时,建立一个package, 将相应方法封装到类中。
注意消息体
鉴权机制就是让服务器知晓,收到的两个请求,是否来自同一个用户。这样才能保证我自己淘宝收藏的东西,不会跑到其他用户那。
网站服务程序怎么知道每个HTTP请求(比如付费 HTTP 请求)对应的是哪个客户的呢?—>建立seesion机制(会话机制)
使用session 机制区分用户,当然还有其他机制
实现:
# 创建 Session 对象
s = requests.Session()
# 通过 Session 对象 发送请求
response = s.post("http://127.0.0.1/api/mgr/signin",
data={
'username': 'byhy',
'password': '88888888'
})
printResponse(response)
# 通过 Session 对象 发送请求
response = s.get("http://127.0.0.1/api/mgr/customers",
params={
'action' : 'list_customer',
'pagesize' : 10,
'pagenum' : 1,
'keywords' : '',
})
printResponse(response)
import requests
# 打印请求消息, 参数为 PreparedRequest 对象
def pretty_print_request(req):
if req.body == None:
msgBody = ''
else:
msgBody = req.body
print(
'{}\n{}\n{}\n\n{}'.format(
'\n\n----------- 发送请求 -----------',
req.method + ' ' + req.url,
'\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()),
msgBody,
))
# 打印响应消息
def pretty_print_response(res):
print(
'{}\nHTTP/1.1 {}\n{}\n\n{}'.format(
'\n\n----------- 得到响应 -----------',
res.status_code,
'\n'.join('{}: {}'.format(k, v) for k, v in res.headers.items()),
res.text,
))
req = requests.Request(
'post',
'http://www.baidu.com',
headers={
'head1':'value1',
'head2':'value2',
},
data={
'item1':'body-value1',
'item2':'body-value2',
})
prepared = req.prepare()
pretty_print_request(prepared)
session = requests.Session()
r = session.send(prepared)
pretty_print_response(r)