1.数据准备
2.用python获取Excel文件中测试用例数据
3.通过requests测试接口
4.根据接口返回的code值和Excel对比
写一个简单登录的接口自动化测试
一、写一个封装的获取excel表格的模块
用例.png
代码实现如下:
importxlrd
workbook =NonedefopenExcel(path):"""打开excel"""globalworkbookif(workbook ==None):
workbook = xlrd.open_workbook(path, on_demand=True)defgetSheet(sheetName):"""获取行号"""globalworkbookreturnworkbook.sheet_by_name(sheetName)defgetRows(sheet):"""获取行号"""returnsheet.nrowsdefgetContent(sheet, row, col):"""获取表格中内容"""returnsheet.cell(row, col).valuedefrelease(path):"""释放excel减少内存"""globalworkbook
workbook.release_resources()delworkbook
代码封装后当成模块引用,这还是最开始呢。
二、引用requests模块接口测试
准备工作:
需要一个HTMLTestRunner。自带单元测试板块套件。
代码如下:
-*- coding: UTF-8-*-importrequestsimporttezLogaslog
logging = log.getLogger()defapiTest(method, url, data ,headers):"""定义一个请求接口的方法和需要的参数"""try:ifmethod =="post":
results = requests.post(url, data, headers=headers)ifmethod =="get":
results = requests.get(url, data, headers=headers)ifmethod =="put":
results = requests.put(url, data, headers=headers)ifmethod =="delete":
results = requests.delete(url, headers=headers)ifmethod =="patch":
results == requests.patch(url, data, headers=headers)ifmethod =="options":
results == requests.options(url, headers=headers)
response = results.json()
code = response.get("code")returncodeexceptException, e:
logging.error("service is error", e)defrunTest(sheet):"""执行测试用例"""rows = excel.getRows(sheet)
fail =0foriinrange(2, rows):
testData = excel.getContent(sheet, i, gl.CASE_DATA)
testUrl = excel.getContent(sheet, i, gl.CASE_URL)
testMethod = excel.getContent(sheet, i, gl.CASE_METHOD)
testHeaders = eval(excel.getContent(sheet, i, gl.CASE_HEADERS))
testCode = excel.getContent(sheet, i, gl.CASE_CODE)
actualCode = request.apiTest(testMethod, testUrl, testData, testHeaders)
expectCode = str(int(testCode))
failResults =' url: '+ testUrl +' params: '+ testData +' actualCode: '+ actualCode +' expectCode: '+ expectCodeifactualCode == expectCode:
logging.info("pass")elifactualCode != expectCode:
logging.info("fail %s", failResults)
fail +=1iffail >0:returnFalsereturnTrue
三、查看测试报告
报告.png