第一部分. requests请求----------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
1.安装requests
在线安装: pip install requests
国内源:pip install requests -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com
2. 接口入门
2-1. get请求
随机文本
url = "https://api.vvhan.com/api/ian?type=json"
抢红包接口
url = "http://exam.mofing.com/plan/hongbaorain/439124.json"
随机情话
url = "https://api.uomg.com/api/rand.qinghua?format=json"
考拉FM
url = "http://api.kaolafm.com/api/v4/pagecontent/list?pageid=103"
2-2. post请求
平安查询免费商户接口(只有参数)
url = "http://www.pingan.com/cms-tmplt/pinganlife/synShopList.do"
params = {"dateUpdated":"2017-12-02"}
腾讯云区块链信息接口(有请求头、请求参数)
url = "https://cloud.tencent.com/developer/services/ajax/column/article"
headers = {"Accept":"application/json,text/plain,*/*",
"Content-Type":"application/json;charset=UTF-8"}
params = { "action":"FetchCategoryArticles",
"payload":{"categoryId":102,
"pageNumber":1,
"pageSize":20,
"sortType":"hot"} }
3. 序列化与反序列化
3-1. 序列化: 把python数据类型(列表、字典、元组)转换为json字符串格式(str), json.dumps( )
import json
info = {"ming": {"sex": "男","cars": ["劳斯莱斯","五菱宏光"] },
"hong": {"sex": "女","bags": {"qianbao": ["lv","七匹狼"] } } }
# ensure_ascii=False是将unicode转换为中文,indent=4是缩进4个空格
info_str = json.dumps(info,ensure_ascii=False,indent=2)
print(type(info_str))
print(info_str)
3-2. 反序列化:把json字符串(str)转换为Python的数据类型(列表、字典、元组),json.loads( )
import json
info = """{"ming": {"sex": "男","cars": ["劳斯莱斯","五菱宏光"] },
"hong": {"sex": "女","bags": {"qianbao": ["lv","七匹狼"] } } }"""
info_dict = json.loads(info)
print(type(info_dict))
print(info_dict)
3-3. 补充:
# 序列化:将字典转成字符串,并保存到json文件中
dict1 = {"字典":"字典的值"}
import json
with open("../test06.json","w",encoding="utf-8") as f:
json.dump(dict1,f,ensure_ascii=False,indent=4)
# 反序列化:将json文件中的字符串转成字典
import json
with open("../test06.json","r",encoding="utf-8") as f2:
res2 = json.load(f2)
print(type(res2)) #字典格式
print(res2)
第二部分. 封装接口测试框架-----------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
安装xlrd旧版本:pip uninstall xlrd → pip3 install xlrd==1.2.0
xlrd的1.2.0版本同时支持读取xlsx和xls,而新版本只支持xls
安装openpyxl: pip install openpyxl
写入xlsx文件
# 构造项目完整路径,并将其导入临时路径
projectPath = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# print(projectPath)
sys.path.append(projectPath)
apiFramework 接口框架(设为Sources Root)
base 基础部分
runByMethod.py 封装请求方式类
data 测试数据、测试用例
inputData.json
interface.xlsx
operate (utility/utils) 封装操作文件工具类
operateExcel.py
operateJson.py
config 操作文件
configCol.py 配置请求数据列
getData.py 工具类配置(读取Excel数据)
main 主程序配置
runMain.py 主程序
compareRes.py 封装断言
sendMail.py 发送邮件
注: os.getcwd() # 运行脚本的工作路径(常用)
os.path.dirname(os.path.abspath(__file__)) # 模块文件所在的路径(常用)
os.path.abspath(".") # 运行脚本的工作路径
os.path.dirname( os.getcwd()) # 运行脚本所在的路径的上一级路径
os.path.dirname(__file__) # 模块文件所在路径(win直接当前运行会不识别)
os.path.abspath(__file__) # 模块文件完整路径
----------------------------------------------------------
有数据依赖
apiFrameworkDepend 接口框架(设为Sources Root)
base 基础部分
runByMethod.py 封装请求方式类
data 测试数据、测试用例
inputData.json
interface.xlsx
operate (utility/utils) 封装操作文件工具类
operateExcel.py
operateJson.py
config 操作文件
configCol.py 配置请求数据列
getData.py 工具类配置(读取Excel数据等)
dependData.py 处理依赖数据(获取token值)
main 主程序配置
runMain.py 主程序
compareRes.py 封装断言
sendMail.py 发送邮件
注:请求头放在了getData.py里面,