背景
学习一段时间的 python3 了,自己感觉还算可以吧 虽然代码有些烂,但是感觉还是能够做出来东西的,天天在论坛看东西,学习别人的,决定自己实战一把。决定用 python 来实现一个简单的接口测试的工具,算是小框架吧,自己感觉有点 low。不过还是开源了出来,请大家拍砖。废话不多说上干货。
实现如下
利用 python3+requests 实现基于 http 请求 json 格式的接口。用例管理才用 Excel 来处理,配置文件通过 yaml 文件来管理。对 requests 的库进行简单的封装。然后通过 python 来组织调用这些文件来处理生成测试报告,测试报告支持 html 和 excel,这里没有利用 unnitest 模块。这里的断言才用了自己封装的形式。代码实现分析如下:
def assert_in(asserqiwang,fanhuijson):
if len(asserqiwang.split('=')) > 1:
data = asserqiwang.split('&')
result = dict([(item.split('=')) for item in data])
value1=([(int(fanhuijson[key])) for key in result.keys()])
value2=([(int(value)) for value in result.values()])
if value1==value2:
return 'pass'
else:
return 'fail'
else:
raise ('请填写期望值')
这里主要利用的是字符串的分割,字符串转换字典,字典之间取值比较,可能写的比较 low。
针对 requests 的封装,这里只做简单的封装。
class reques():
def __init__(self):
self.headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:51.0) Gecko/20100101 Firefox/51.0"}
def get(self, url):#get消息
try:
r = requests.get(url, headers=self.headers)
r.encoding = 'UTF-8'
json_response = json.loads(r.text)
return json_response
except Exception as e:
print('get请求出错,出错原因:%s'%e)
return {}
def post(self, url, params):#post消息
data = json.dumps(params)
try:
r =requests.post(url,params=params,headers=self.headers)
json_response = json.loads(r.text)
return json_response
except Exception as e:
print('post请求出错,原因:%s'%e)
def delfile(self,url,params):#删除的请求
try:
del_word=requests.delete(url,params,headers=self.headers)
json_response=json.loads(del_word.text)
return json_response
except Exception as e:
print('del请求出错,原因:%s' % e)
return {}
def putfile(self,url,params):#put请求
try:
data=json.dumps(params)
me=requests.put(url,data)
json_response=json.loads(me.text)
return json_response
except Exception as e:
print('put请求出错,原因:%s'%e)
return json_response
这里呢 主要是基于 requests 的模块,然后对其进行简单的封装,形成一个简单的封装模块。
后面呢,我有对这个进行二次封装,是指更加能够符合后面调用的简便化
class TestApi(object):
def __init__(self,url,key,connent,fangshi):
self.url=url
self.key=key
self.connent=connent
self.fangshi=fangshi
def testapi(self):
global response
if self.fangshi=='POST':
self.parem = {'key': self.key, 'info': self.connent}
response=reques.post(self.url,self.parem)
elif self.fangshi=="GET":
self.parem = {'key': self.key, 'info': self.connent}
response = reques.post(self.url, self.parem)
return response
def getcode(self):
code=self.testapi()['code']
return code
def getJson(self):
json_data = self.testapi()
return json_data
到这里里面的主要逻辑就已经完成工了,这里呢 我的测试报告模块,我进行了单独的封装。
给大家展示下最后的效果图
项目目录展示
测试报告展示