接口测试 Http 接口测试框架之拉取接口

Heyniu · July 26, 2016 · Last by Heyniu replied at July 27, 2016 · 1747 hits

Http 接口测试框架

接口拉取已经实现

  • 通过url拉取html然后匹配接口
  • 去除无效的接口和过期的接口
  • 接口列表写入文件

代码

说明:url涉及公司数据,所以我会用假的数据代替

#!/usr/bin/evn python
# -*- coding:utf-8 -*-

# FileName GetApi.py
# Author: HeyNiu
# Created Time: 20160726

import urllib.request
import re
import datetime


class GetApi(object):

def __init__(self, url, path):
print("正在连接指定网址......")
self.startData = datetime.datetime.now()
self.Url = url
self.path = path

def __get_html(self):
"""
获得指定url的html
:return: 返回一个byte流html
"""
return urllib.request.urlopen(self.Url).read()

def __get_api(self):
"""
通过正则表达式匹配相应的接口
:return: 返回一个匹配后的接口列表
"""
html = self.__get_html()
print("接口拉取成功")
reg = re.compile(r'<a href="(.+?)" title="(.+?)">(.+?)</a>')
return re.findall(reg, html.decode('utf-8'))

def __remove_deprecated_api(self):
"""
移除一些过期的接口
:return: 返回一个客户端正在使用的接口列表
"""
api = self.__clear_api()
print("移除过期接口......")
return (index for index in api if index[1].find("已取消") == -1 and index[0].find("已取消") == -1
and index[1].find("XMPP") == -1 and index[0].find("已不用") == -1 and index[0].find("已失效") == -1
and index[1].find("废弃") == -1)

def __clear_api(self):
"""
去除部分匹配出来是非接口的数据
/b/说明:/b/是辨别真正接口与无效接口的桥梁
e.g.
真正接口
/b/System/GetToken
无效接口(网页中存在使用的标签与接口的标签一致,所以匹配时匹配进来了)
abcabc
:return: 返回一个真正的接口列表,里面包含过期接口,需要进一步移除
"""
api = self.__get_api()
print("接口清洗中......")
return (index for index in api if index[0].startswith("/b/"))

def __write_file(self, path):
"""
接口数据写入文件
:return:
"""
api = self.__remove_deprecated_api()
print("接口数据写入文件中......")
with open(path, 'w') as f:
for i in api:
f.write(i[-1])
f.write("\n")
print("接口数据写入成功")

def get_api_data(self):
print("接口拉取中......")
self.__write_file(self.path)


if __name__ == "__main__":
api1 = GetApi("http://apihelper.a.com/Home/API/b", "D:\\Fiddler Sessions\\api.txt")
api1.get_api_data()
d2 = datetime.datetime.now()
time = d2 - api1.startData
print("%s %s%s" % ("耗时:", time.seconds, "s"))

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 12 条回复 时间 点赞
Heyniu [Topic was deleted] 中提及了此贴 26 Jul 15:43

什么版本的python开发的

Heyniu #3 · July 26, 2016 作者

#2楼 @jphtmt python 3.5.0

这是公开的api么

Heyniu #5 · July 26, 2016 作者

#4楼 @mads 你指这个python文件还是python里面用的url的api

  • url的api是我公司的

#5楼 @heyniu 我说你写的这些python代码

Heyniu #8 · July 26, 2016 作者

#7楼 @mads 思路都写好了啊,你估计还没理解里面的意思吧,如果你理解了就知道怎么用了

#8楼 @heyniu 是的😋 我抽空先看看你第一篇

期待更新

Heyniu #11 · July 27, 2016 作者

#10楼 @lose 更新了移除录制的接口
https://testerhome.com/topics/5529

#11楼 @heyniu 谢谢分享,对你的思路很敬佩,我看你总结了很多,可以出个类似的合集。有没有托管代码到github😬

Heyniu #13 · July 27, 2016 作者

#12楼 @lose 等我完成了就上传github,目前只是零散的代码贴在testerhome

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up