主要功能:解析excal表格里面的url,访问swagger生成json文件。
主要参考了基于HttpRunner,解析swagger数据,快速生成接口测试框架这篇博文,修改代码符合自己的需求而来。
解析swagger类:
import os, requests
from httprunner import logger
from lib.processingJson import write_data, get_json
from lib.urls import urls
import traceback
class AnalysisJson:
"""swagger自动生成测试用例"""
def __init__(self, url_title):
self.title=url_title
self.url = urls[url_title]
self.interface = {
}
self.case_list = []
self.tags_list = []
self.http_suite = {
"config": {
"name": "", "base_url": "", "variables": {
}},
"testcases": []}
self.http_testcase = {
"name": "", "testcase": "", "variables": {
}}
self.http_suite['config']['name'] = url_title
def retrieve_data(self):
"""
主函数
:return:
"""
try:
r = requests.get(self.url).json()
# write_data(r, 'data.json')
# r = get_json('D:\HttpRunner_framework\\testcases\data.json')
except Exception as e:
logger.log_error('请求swagger url 发生错误. 详情原因: {}'.format(e))
return 'error'
self.data = r['paths'] # 接口数据
self.url = 'http://' + r['host']
# self.title = r['info']['title']
# self.http_suite['config']['name'] = self.title
self.http_suite['config']['base_url'] = self.url
self.definitions = r['definitions'] # body参数
for tag_dict in r['tags']:
self.tags_list.append(tag_dict['name'])
i = 0
for tag in self.tags_list:
self.http_suite['testcases'].append({
"name": "", "testcase": "", "variables": {
}})
self.http_suite['testcases'][i]['name'] = tag
self.http_suite['testcases'][i]['testcase'] = 'testcases/'+self.title+'/' + tag + '.json'
i += 1
suite_path = os.path.join(os.path.abspath(os.path.join(os.path.dirname("__file__"), os.path.pardir)),
"testsuites")
testcase_path = os.path.join(suite_path, self.title+'.json')
# print("testcase_path:%s"%testcase_path)
write_data(self.http_suite, testcase_path)
if isinstance(self.data, dict):
for tag in self.tags_list:
self.http_case = {
<