普及数据分离/代码分离/文件分离的概念
- 数据分离
- API_AUTO 项目名
- run.py 代码执行入口
- common 公共类,大家都可使用(也可以叫tools工具类)
- conf 放置配置文件xx.conf
- public 放置公共代码
- test_data测试数据
- result测试结果
- test_result 测试结果
- test_report 测试报告
- image 测试截图
- log 日志
- API_AUTO 项目名
1.高级用法-会话
import requests
s=requests.session() #创建一个会话
logon_res=s.get(login_url,params=login_data) #login_data必须有个key,常用是params
recharge_res=s.post(recharge_url,recharge_data) #这里就不用传cookies啦
print(recharge_res.json())
2.给类取别名
from API_AUTO.common.public.http_request import HttpRequest as ht
3.写run.py文件
from API_AUTO.common.public.http_request import HttpRequest #引入自己封装的http请求
#登录
payload = {"user_phone": "1801923****", "device_model": "iphone7"}
res=HttpRequest().http_request("/login","post",payload)
4.改造run.py文件
#run.py文件
#代码执行的入口:
from API_AUTO.common.public.http_request import HttpRequest
import json
def run(test_data):
for item in test_data: #测试数据用一个list[]存储,一个{}是一条用例
print ("正在测试的case是",item["title"])
res = HttpRequest().http_request(item["url"], item["method"],eval(item["payload"]))
print res.json()
#测试数据
test_data=[{"url":"/login","method":"post",
"payload":{"user_phone": "1801923****","device_model": "iphone7"},"title":"正确的登录"},
{"url":"/login","method":"post",
"payload": {"user_phone": "1850171****", , "device_model": "iphone7"},"title":"黑名单登录"}]
#调用函数
run(test_data)
5.通过excel管理测试数据
写一个读取excel的工具类,在学习excel操作时写过,这次需要添加一个写回数据的方法
```
from openpyxl import load_workbook
'''
操作excel
'''
class DoExcel:
def get_data(self,file_name,sheet_name):
wb=load_workbook(file_name)
sheet=wb[sheet_name]
test_data=[] #每条数据要存在列表里
for i in range(2, sheet.max_row+1):
sub_data={}
sub_data["case_id"] = sheet.cell(i, 1).value
sub_data["url"]=sheet.cell(i,2).value
sub_data["method"]=sheet.cell(i,3).value
sub_data["payload"]=sheet.cell(i,4).value
sub_data["title"]=sheet.cell(i,5).value
test_data.append(sub_data)
return test_data
def write_back_data(self,file_name,sheet_name,i,value):
wb=load_workbook(file_name)
sheet=wb[sheet_name]
sheet.cell(i,6).value=value
wb.save(file_name) #保存
```
6.改造`run.py`
```
from API_AUTO.common.public.http_request import HttpRequest
from API_AUTO.common.public.do_excel import DoExcel
def run(test_data):
for item in test_data:
print "正在测试的case是",item["title"]
res=HttpRequest("1.6.0","android", "785c6fee0e4488ca412a5afc9a00e9d8").http_request(item["url"], item["method"],eval(item["payload"]))
print res.json() #python2.7的print不需要括号
DoExcel().write_back_data("test_data/test_data.xlsx","Sheet1",item["case_id"]+1,str(res.json()))
test_data=DoExcel().get_data("test_data/test_data.xlsx","Sheet1")
run(test_data)
```