应用前几篇学习的知识点,建立一个简单的接口自动化测试框架,模仿编写,非常初级,留作自己的纪念。
主要的文件结构:
- userCase.xls:存储测试用例
- read_excel.py:读取存储在excel中的测试用例,并存储于list中
- send_requests.py:模拟发送请求,其中包含get、post及put,响应为json格式
- testCase.py:利用unittest增加断言,执行测试用例
userCase.xls

read_excel.py
# -*- coding: utf-8 -*-
import os
import xlrd
path=os.path.dirname(__file__)#获取当前文件的路径,但不包括当前文件
class readExcel():
def get_xls(self,xls_name,sheet_name):
xls_path=os.path.join(path,xls_name)#得到对应的excel文件完整路径
file=xlrd.open_workbook(xls_path)
sheet=file.sheet_by_name(sheet_name)
rows=sheet.nrows
cls=[]
for i in range(rows):
if sheet.row_values(i)[0] != 'case_name':
cls.append(sheet.row_values(rowx=i,start_colx=0,end_colx=None))
return cls
send_requests.py
# -*- coding: utf-8 -*-
import requests
import json
class RunMain():
def send_post(self,url,data,headers):#
result=requests.post(url=url,data=data,headers=headers).json()
res=json.dumps(result,ensure_ascii=False,sort_keys=True,indent=4)
return res
def send_get(self,url,data,headers):
result=requests.get(url=url,params=data,headers=headers).json()
res=json.dumps(result,ensure_ascii=False,sort_keys=True,indent=4)
return res
def send_put(self,url,data,headers):
result=requests.put(url=url,data=data,headers=headers).json()
res=json.dumps(result,ensure_ascii=False,sort_keys=True,indent=4)
return res
def run_main(self,method,url=None,data=None,headers={"content-type":"application/json"}):
result=None
if method=='post':
result=self.send_post(url,data,headers)
elif method=='get':
result=self.send_get(url,data,headers)
elif method=='put':
result=self.send_put(url,data,headers)
else:
print('method不是post、get或put')
return result
testCase.py
# -*- coding: utf-8 -*-
import json
import unittest
from send_requests import RunMain
import paramunittest
import read_excelnew
user_xls=read_excelnew.readExcel().get_xls('userCase.xls','user')
@paramunittest.parametrized(*user_xls)
class testUserLogin(unittest.TestCase):
def setParameters(self,case_name,path,query,body,method):
self.case_name=str(case_name)
self.path=str(path)
self.query=str(query)
self.body = str(body)
self.method=str(method)
def setUp(self):
print(self.case_name+":开始")
def tearDown(self):
print("结束\n\n")
def test(self):
url='https://www.***.com'
new_url=url+self.path+self.query
info=RunMain().run_main(self.method,new_url,data=self.body.encode(),headers={"content-type":"application/json"})
ss=json.loads(info)
if self.case_name=='1':
self.assertNotEqual(ss['human'],100)
if self.case_name=='2':
self.assertEqual(ss['name'],'123')
if self.case_name=='3':
self.assertEqual(ss['mode'],'freedom')
if __name__ == '__main__':
unittest.main()
自我记录,有错误欢迎指正~
网友评论