接口:
系统内部接口(灰盒)
系统外部接口:
软件接口、服务器接口(http接口,黑盒测试)
硬件接口(不涉及)
接口测试原理:
本质是基于某种协议,发送一个Request请求给服务器,然后服务器返回一个Response响应数据,对数据进行分析,判断是否与我们预期的返回一致,从而验证功能正确。
RESTful架构风格------->http协议
http协议:
请求
请求行:请求方法、资源地址、协议版本
消息报头
请求正文
响应
状态行:协议版本、状态码、状态码说明
消息报头
响应实体
开展接口测试:
1、获取接口文档
2、设计接口用例
3、编写python脚本:
get类型请求接口
post类型请求接口
参数关联接口 : requests.session() 多个接口保持连接
unittest实现接口测试:断言
数据和代码分离:xlrd ---->读取excel表格数据(注意文件格式)
参数关联接口举例:
# 导包
import requests
import re # 正则表达式需要导入包
# 把上一个接口响应文本结果中的usersession值,做为下一个接口的传参
#接口地址
url1 = "https://192.168.103.106:1080/webtours/nav.pl?in=home"
s = requests.session() #为了保持和下一个接口件量相同的连接通道
res = s.get(url1)
print(res.text)
# 用正则表达式匹配取出响应文本中的usersession的值(.+?),表示值不一定只有一个字符
usersession = re.findall(r'name=userSession value=(.+?)>',res.text) #该变量是一个列表,可匹配到多个值
print(usersession)
# 接口地址
url2 = "https://192.168.103.106:1080/webtours/login.pl"
para = {"userSession":usersession[0],"username":"jojo","password":"bean","login.x":"54","login.y":"11","login":"Login","JSForSubmit":"off"}
# 发送post请求
res = s.post(url2,data=para)
print(res.text)
# 总结
# 参数关联接口
# 1、导包
# 2、构造接口地址
# 3、构造请求参数
# 4、发送接口请求,requests.session()保证连接
# 5、使用正则匹配接口响应数据内容
# 6、构造接口请求参数
# 7、发送接口请求
# 8、打印结果
代码和数据分离:
1、定义实现读取excel数据的类及excel.xls文件
import xlrd
class Read_Ex():
def read_excel(self):
# 打开excel 相对路径
book = xlrd.open_workbook("../Data/data2.xls") # 天气测试接口取值
# 找到sheet页
table = book.sheet_by_name("Sheet1")
# 获取总行数和总列数
rowNum = table.nrows
colNum = table.ncols
# print(rowNum)
# 定义一个列表
s = []
# 取第一行数据作为key的值
key = table.row_values(0)
# print(key)
if rowNum <= 1:
print("文件数据为空")
else:
j = 1
for i in range(rowNum-1):
# print(i)
d = {}
values = table.row_values(j)
for x in range(colNum):
# print(values)
d[key[x]]=values[x]
j+=1
s.append(d)
return s
if __name__ == '__main__':
# 创建类对象
r = Read_Ex()
# 通过对象调用方法
s = r.read_excel()
print(s)
2、在接口测试时引用类
import requests
import unittest
# 导入类
from Commonlib.ReadExcel import Read_Ex
class Test_Tq_excel(unittest.TestCase):
def setUp(self):
print("开始")
def tearDown(self):
print("结束")
def test01(self):
E = Read_Ex()
data = E.read_excel()
for i in data:
url = "http://apis.juhe.cn/simpleWeather/query"
para = {"city": i["city"], "key": i["key"]}
r = requests.get(url, params=para)
# 获取json返回数据
# res = r.json()
# print(res["error_code"])
# 断言返回结果
# self.assertEqual(res["error_code"],int(i["exp"]))
if __name__ == '__main__':
unittest.main()
注意:excel文件的位置和类包引用时的位置