接口测试程序部分
1.设计思路:
1.测试数据从excel中读取,excel表格设计如下:
requests:需要将get方式和post方式的统一从params一栏读取。所以第一步:需要将requests.get(params=,cookies=,headers=)和requests.post(json=,data=,cookies=,headers=)统一封装为一个类中的某个方法,取名HttpServer 类request方法。第二部:再在base文件,再封装为一个方法get_response:创建这个对象,调用该对象的request方法。
调用方法: result2=Httpserver.httpserver().request(url=url,methond=method,**Datatest)
excel:从表格获取数据。所以第一步:创建Readexcel类:该类自动获取文件路径,并且开启文件,读取所有数据。第二步:在base文件封装一个get_excel方法(文件名,sheet名),创建Readexcel对象,调用该对象的方法
base:
get_url(endpoint)
get_cookies(username)
get_excel(filename,sheetname)
get_response(url,method,**testdata)
get_get()
get_post()
1.读取ini配置文件:
1 ini文件: 2 [URL] 3 url_base=http://study-perf.qa.netease.com 4 5 6 import configparser >>导入模块 7 cf = configparser.ConfigParser() >>创建对象 8 conf_path=xxx >>ini文件路径 9 cf.read( conf_path) >>先read 10 url=cf.get('URL','url_base') >>再get
2.os获取文件路径及路径拼接
os.path模块 os.path.dirname(path) #返回文件相对路径 os.path.realpath(path) #返回path的真实路径 os.path.abspath("文件名"):#返回绝对路径 os.path.join(path1[, path2[, ...]]) #把目录和文件名合成一个路径 os.path.split(path) #把路径分割成dirname和basename,返回一个元组 os.path.dirname(os.path.dirname(os.path.abspath("文件名"))): 表示获取当前文件夹上一层目录 __file__ __file__ 是用来获得模块所在的路径的,这可能得到的是一个相对路径,比如在脚本test.py中写入: #!/usr/bin/env python print __file__ 按相对路径./test.py来执行,则打印得到的是相对路径, 按绝对路径执行则得到的是绝对路径。 而按用户目录来执行(~/practice/test.py),则得到的也是绝对路径(~被展开) 所以为了得到绝对路径,我们需要 os.path.realpath(__file__)。
3.excel
import xlrd import os '''1.获取excel文件路径 ''' def excel_path(excelname): path=os.path.dirname(os.path.dirname(os.path.realpath(__file__))) path = ''.join(([path, '/test_case/excel_data'])) path=os.path.join(path,excelname) return path 2.打开并获数据 def readexcel(excelname,sheetname): path=excel_path(excelname) xl=xlrd.open_workbook(path) xl=xl.sheet_by_name(sheetname) nrow=xl.nrows datas=[] for i in range(nrow): datas.append(xl.row_values(i)) return datas if __name__ == '__main__': data=readexcel('user_login_test.xlsx','alldata') print(data)
>>
[['api_name', 'endpoint', 'method', 'desprip'], ['获取skulist接口', '/common/fgadmin/login', 'post', '传递params']]
传参方式=data[1][2]
如果excel中的值为:{‘json’:'xxx','header':'xxx'}
通过data获取出来的值实为 str格式,不是字典,需通过eval()转换为字典。