优化代码
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
# @Author : lileilei
|
||||
# @Site :
|
||||
# @File : testFengzhuang.py
|
||||
# @Software: PyCharm
|
||||
from Interface.test_requests import requ
|
||||
reques=requ()
|
||||
class TestApi(object):
|
||||
@@ -25,4 +24,4 @@ class TestApi(object):
|
||||
return code
|
||||
def getJson(self):
|
||||
json_data = self.testapi()
|
||||
return json_data
|
||||
return json_data
|
||||
@@ -1 +1 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
@@ -13,4 +13,3 @@ def save_result(testtime,toial,passnum,fail):
|
||||
f.close()
|
||||
except:
|
||||
LOG.info('保存测试结果出错,原因:%s'%Exception)
|
||||
print('记录测试结果失败')
|
||||
|
||||
@@ -41,6 +41,4 @@ def makedata():
|
||||
for i in range(len(listid)):
|
||||
make_data.append({'url':listurl[i],'key':listkey[i],'coneent':listconeent[i],'fangshi':listfangshi[i],'qiwang':listqiwang[i]})
|
||||
i+=1
|
||||
return make_data
|
||||
|
||||
|
||||
return make_data
|
||||
@@ -14,13 +14,11 @@ if not os.path.exists(LOG_DIR):
|
||||
def get_logger(name='jiekou', file_log=file_stream, level=''):
|
||||
""" get logger Factory function """
|
||||
logbook.set_datetime_format('local')
|
||||
|
||||
ColorizedStderrHandler(bubble=False, level=level).push_thread()
|
||||
logbook.TimedRotatingFileHandler(
|
||||
os.path.join(LOG_DIR, '%s.log' % name),
|
||||
date_format='%Y-%m-%d-%H', bubble=True, encoding='utf-8').push_thread()
|
||||
os.path.join(LOG_DIR, '%s.log' % name),
|
||||
date_format='%Y-%m-%d-%H', bubble=True, encoding='utf-8').push_thread()
|
||||
return logbook.Logger(name)
|
||||
|
||||
LOG = get_logger(file_log=file_stream, level='INFO')
|
||||
def logger(param):
|
||||
""" fcuntion from logger meta """
|
||||
@@ -34,5 +32,4 @@ def logger(param):
|
||||
# LOG.info("全部kwargs参数信息 , {}".format(str(kwargs)))
|
||||
return function(*args, **kwargs)
|
||||
return _wrap
|
||||
return wrap
|
||||
|
||||
return wrap
|
||||
@@ -10,12 +10,12 @@ def assert_in(asserqiwang,fanhuijson):
|
||||
value1=([(str(fanhuijson[key])) for key in result.keys()])
|
||||
value2=([(str(value)) for value in result.values()])
|
||||
if value1==value2:
|
||||
return 'pass'
|
||||
return { 'code':2,"result":'pass'}
|
||||
else:
|
||||
return 'fail'
|
||||
return {'code':0,'result':'fail'}
|
||||
else:
|
||||
LOG.info('填写测试预期值')
|
||||
raise ('请填写期望值')
|
||||
return {"code":1,'result':'填写测试预期值'}
|
||||
@logger('断言测试结果')
|
||||
def assertre(asserqingwang):
|
||||
if len(asserqingwang.split('=')) > 1:
|
||||
@@ -24,5 +24,4 @@ def assertre(asserqingwang):
|
||||
return result
|
||||
else:
|
||||
LOG.info('填写测试预期值')
|
||||
raise ('请填写期望值')
|
||||
|
||||
raise {"code":1,'result':'填写测试预期值'}
|
||||
@@ -7,7 +7,7 @@
|
||||
import os
|
||||
titles='接口测试'
|
||||
def title(titles):
|
||||
title='''<!DOCTYPE html>
|
||||
title='''<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
@@ -18,12 +18,12 @@ def title(titles):
|
||||
</head>
|
||||
<body>
|
||||
'''%(titles)
|
||||
return title
|
||||
return title
|
||||
connent='''
|
||||
<div style='width: 1170px;margin-left: 15%'>
|
||||
<h1>接口测试的结果</h1>'''
|
||||
def time(starttime,endtime,passge,fail):
|
||||
beijing='''
|
||||
beijing='''
|
||||
<p><strong>开始时间:</strong> %s</p>
|
||||
<p><strong>结束时间:</strong> %s</p>
|
||||
<p><strong>耗时:</strong> %s</p>
|
||||
@@ -32,10 +32,8 @@ def time(starttime,endtime,passge,fail):
|
||||
Fail: <strong >%s</strong>
|
||||
</span></p>
|
||||
<p ><strong>测试详情如下</strong></p> </div> '''%(starttime,endtime,(endtime-starttime),passge,fail)
|
||||
return beijing
|
||||
return beijing
|
||||
shanghai='''
|
||||
|
||||
|
||||
<p> </p>
|
||||
<table border='2'cellspacing='1' cellpadding='1' width='1100'align="center" >
|
||||
<tr >
|
||||
@@ -90,6 +88,6 @@ def relust(titles,starttime,endtime,passge,fail,id,name,key,coneent,url,meth,yuq
|
||||
text=title(titles)+connent+time(starttime,endtime,passge,fail)+shanghai+ceshixiangqing(id,name,key,coneent,url,meth,yuqi,json,relust)+weibu
|
||||
return text
|
||||
def createHtml(filepath,titles,starttime,endtime,passge,fail,id,name,key,coneent,url,meth,yuqi,json,relusts):
|
||||
texts=relust(titles,starttime,endtime,passge,fail,id,name,key,coneent,url,meth,yuqi,json,relusts)
|
||||
with open(filepath,'wb') as f:
|
||||
f.write(texts.encode())
|
||||
texts=relust(titles,starttime,endtime,passge,fail,id,name,key,coneent,url,meth,yuqi,json,relusts)
|
||||
with open(filepath,'wb') as f:
|
||||
f.write(texts.encode())
|
||||
@@ -4,7 +4,7 @@
|
||||
@file: pyreport_excel.py
|
||||
@time: 2017/6/7 8:47
|
||||
"""
|
||||
import xlrd ,os,xlwt,yaml,xlsxwriter #导入库
|
||||
import xlwt,yaml
|
||||
from xlwt import *
|
||||
def yangshi1():
|
||||
style = XFStyle()
|
||||
|
||||
27
README.md
27
README.md
@@ -1,59 +1,32 @@
|
||||
# 接口测试框架(基于json格式、http请求,python3,不兼容python2.x版本)
|
||||
|
||||
## 注:现在基于Excel文件管理测试用例基本实现,)
|
||||
|
||||
## (目前在部分window上会出现FileNotFoundError [Errno 2] No such file or directory,这个bug是路径过长,解决方案为吧log日志放在当前目录,或者修改动态生成的文件的名字,给了第一种方式,测试日志放在当前目录)
|
||||
|
||||
## qq交流群:194704520 一群 683894834 二群
|
||||
|
||||
### 使用的库 requests,绝大部分是基于Python原有的库进行的,这样简单方便,
|
||||
|
||||
### 使用脚本参数分离等思想,尽可能降低代码的耦合度。
|
||||
|
||||
# 2017-11-1版本修改
|
||||
|
||||
## 引入ddt数据驱动和BSTestRunner,并且测试过程使用python的unittest库,运行可以使用run_new来运行测试,新的运行更加简单,对预期结果进行了自定义,
|
||||
|
||||
## 并且对预期结果的自定义格式进行转换,升级后的接口测试框架提供了两套的运行模式,一套是封装后基于自定义的断言格式的接口测试的框架,比较简单粗糙,但是
|
||||
|
||||
## 定义的报告更加具有代表性,一套是封装好完全基于python库的接口测试。使用起来简单,可以供大家选择,新增加测试用例格式为ddt_case.py的格式。
|
||||
|
||||
# 运行后的测试报告如下
|
||||
|
||||

|
||||
|
||||
# log日志
|
||||
|
||||

|
||||
|
||||
# 新增后可以提供两个入口让供你选择,
|
||||
|
||||
## 一:自定义断言方式,自定义测试报告,提供Excel,html格式报告,均为自定义。
|
||||
|
||||
## 二:引用unittest,ddt和BSTestRunner等,让测试用例更加简单明了,代码更加简洁。通俗易懂,且使用更多成熟的框架。
|
||||
|
||||
# ---------------旧版本内容---------
|
||||
|
||||
|
||||
# 首先我们来看下我们的目录
|
||||
|
||||
##
|
||||

|
||||
##
|
||||
### 1.Case文件夹用来存放我们的测试用例相关的,
|
||||
|
||||
|
||||
### 2.test_case用来存储我们的测试数据,Excel管理测试用例,yaml文件管理测试用例,后续要把yaml管理测试用例的也封装出来。
|
||||
|
||||
### 3.Interface对测试接口相关的封装,包括requests库,发送测试报告的email的封装,从Excel取测试数据的封装
|
||||
|
||||
### 4.Public 展示测试报告相关的脚本,这里可以自己封装,也可以使用现成的,我这里是基于我自己封装的,最后生成的测试报告更加易懂,出错可以尽快排查相关原因
|
||||
|
||||
### 5.report 存放测试报告,
|
||||
|
||||
### 6.run_excel_re.py/run_html.py 主运行文件。运行后可以生成相应的测试报告
|
||||
##
|
||||
|
||||
## 产生的html测试报告如下
|
||||

|
||||
##
|
||||
|
||||
38
log/jiekou-2017-12-09-18.log
Normal file
38
log/jiekou-2017-12-09-18.log
Normal file
@@ -0,0 +1,38 @@
|
||||
[2017-12-09 18:15:33.955360] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:16:43.485683] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:16:43.532483] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:16:43.532483] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2017-12-09 18:17:16.059540] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:17:16.106340] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:17:16.106340] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2017-12-09 18:20:02.579929] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:20:03.219530] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:20:03.219530] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2017-12-09 18:20:47.820008] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:20:47.898009] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:20:47.898009] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2017-12-09 18:21:20.751666] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:21:21.204067] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:21:21.204067] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2017-12-09 18:23:26.887169] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:23:27.089970] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:23:27.089970] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2017-12-09 18:23:27.105570] INFO: jiekou: 当前模块 执行测试用例
|
||||
[2017-12-09 18:23:48.478607] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:23:48.541007] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:23:48.541007] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2017-12-09 18:23:48.541007] INFO: jiekou: 当前模块 执行测试用例
|
||||
[2017-12-09 18:24:06.779444] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:24:06.826244] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:24:06.826244] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2017-12-09 18:24:06.841844] INFO: jiekou: 当前模块 执行测试用例
|
||||
[2017-12-09 18:24:25.171876] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:24:25.218676] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:24:25.218676] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2017-12-09 18:24:25.234276] INFO: jiekou: 当前模块 执行测试用例
|
||||
[2017-12-09 18:25:04.967546] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:25:05.014346] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:25:05.014346] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2017-12-09 18:25:40.161208] INFO: jiekou: 当前模块 requests封装
|
||||
[2017-12-09 18:25:40.208008] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2017-12-09 18:25:40.208008] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
189
log/jiekou-2018-02-01-12.log
Normal file
189
log/jiekou-2018-02-01-12.log
Normal file
@@ -0,0 +1,189 @@
|
||||
[2018-02-01 12:13:31.768228] INFO: jiekou: 当前模块 requests封装
|
||||
[2018-02-01 12:13:32.744284] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2018-02-01 12:13:32.745284] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2018-02-01 12:13:32.965296] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:13:32.966296] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:POST
|
||||
[2018-02-01 12:13:32.966296] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:None
|
||||
[2018-02-01 12:13:33.035300] INFO: jiekou: 返回结果:{'code': 40001, 'text': '亲爱的,key不对哦。'}
|
||||
[2018-02-01 12:13:33.036300] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:13:33.036300] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:13:33.037300] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:13:33.037300] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:POST
|
||||
[2018-02-01 12:13:33.038301] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:None
|
||||
[2018-02-01 12:13:33.067302] INFO: jiekou: 返回结果:{'code': 40002, 'text': '此时无声胜有声?'}
|
||||
[2018-02-01 12:13:33.068302] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:13:33.069302] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:13:33.069302] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:13:33.070302] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:GET
|
||||
[2018-02-01 12:13:33.070302] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:None
|
||||
[2018-02-01 12:13:33.071302] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:13:54.637536] INFO: jiekou: 当前模块 requests封装
|
||||
[2018-02-01 12:13:54.729541] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2018-02-01 12:13:54.730541] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2018-02-01 12:13:54.750542] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:13:54.750542] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:POST
|
||||
[2018-02-01 12:13:54.751542] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:None
|
||||
[2018-02-01 12:13:54.784544] INFO: jiekou: 返回结果:{'code': 40001, 'text': '亲爱的,key不对哦。'}
|
||||
[2018-02-01 12:13:54.785544] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:13:54.785544] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:13:54.786544] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:13:54.787544] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:POST
|
||||
[2018-02-01 12:13:54.787544] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:None
|
||||
[2018-02-01 12:13:54.840548] INFO: jiekou: 返回结果:{'code': 40002, 'text': '有些话,难以说出口?'}
|
||||
[2018-02-01 12:13:54.841548] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:13:54.841548] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:13:54.842548] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:13:54.842548] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:GET
|
||||
[2018-02-01 12:13:54.843548] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:None
|
||||
[2018-02-01 12:13:54.843548] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:16:35.866758] INFO: jiekou: 当前模块 requests封装
|
||||
[2018-02-01 12:16:35.962763] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2018-02-01 12:16:35.963763] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2018-02-01 12:16:35.981764] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:16:35.982764] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:POST
|
||||
[2018-02-01 12:16:35.982764] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:None
|
||||
[2018-02-01 12:16:36.020767] INFO: jiekou: 返回结果:{'code': 40001, 'text': '亲爱的,key不对哦。'}
|
||||
[2018-02-01 12:16:36.021767] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:16:36.022767] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:16:36.022767] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:16:36.023767] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:POST
|
||||
[2018-02-01 12:16:36.023767] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:None
|
||||
[2018-02-01 12:16:36.055769] INFO: jiekou: 返回结果:{'code': 40002, 'text': '是不是有什么难言之隐呢?'}
|
||||
[2018-02-01 12:16:36.056769] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:16:36.057769] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:16:36.057769] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:16:36.058769] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:GET
|
||||
[2018-02-01 12:16:36.059769] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:None
|
||||
[2018-02-01 12:16:36.059769] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:19:06.126352] INFO: jiekou: 当前模块 requests封装
|
||||
[2018-02-01 12:19:06.222358] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2018-02-01 12:19:06.222358] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2018-02-01 12:19:06.241359] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:19:06.242359] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:POST
|
||||
[2018-02-01 12:19:06.242359] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:None
|
||||
[2018-02-01 12:19:06.274361] INFO: jiekou: 返回结果:{'code': 40001, 'text': '亲爱的,key不对哦。'}
|
||||
[2018-02-01 12:19:06.274361] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:19:06.275361] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:19:06.276361] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:19:06.276361] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:POST
|
||||
[2018-02-01 12:19:06.277361] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:None
|
||||
[2018-02-01 12:19:06.311363] INFO: jiekou: 返回结果:{'code': 40002, 'text': '是不是有什么难言之隐呢?'}
|
||||
[2018-02-01 12:19:06.312363] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:19:06.313363] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:19:06.314363] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:19:06.315363] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:GET
|
||||
[2018-02-01 12:19:06.316363] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:None
|
||||
[2018-02-01 12:19:06.317363] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:19:35.810050] INFO: jiekou: 当前模块 requests封装
|
||||
[2018-02-01 12:19:35.904055] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2018-02-01 12:19:35.904055] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2018-02-01 12:19:35.923056] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:19:35.924056] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:POST
|
||||
[2018-02-01 12:19:35.924056] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:None
|
||||
[2018-02-01 12:19:35.960058] INFO: jiekou: 返回结果:{'code': 40001, 'text': '亲爱的,key不对哦。'}
|
||||
[2018-02-01 12:19:35.960058] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:19:35.961059] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:19:35.962059] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:19:35.962059] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:POST
|
||||
[2018-02-01 12:19:35.963059] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:None
|
||||
[2018-02-01 12:19:35.994060] INFO: jiekou: 返回结果:{'code': 40002, 'text': '是不是有什么难言之隐呢?'}
|
||||
[2018-02-01 12:19:35.995060] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:19:35.997061] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:19:35.998061] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:19:36.000061] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:GET
|
||||
[2018-02-01 12:19:36.001061] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:None
|
||||
[2018-02-01 12:19:36.002061] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:19:56.665243] INFO: jiekou: 当前模块 requests封装
|
||||
[2018-02-01 12:19:56.761248] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2018-02-01 12:19:56.762248] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2018-02-01 12:19:56.782249] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:19:56.783249] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:POST
|
||||
[2018-02-01 12:19:56.784250] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:None
|
||||
[2018-02-01 12:19:56.824252] INFO: jiekou: 返回结果:{'code': 40001, 'text': '亲爱的,key不对哦。'}
|
||||
[2018-02-01 12:19:56.824252] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:19:56.825252] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:19:56.825252] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:19:56.826252] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:POST
|
||||
[2018-02-01 12:19:56.826252] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:None
|
||||
[2018-02-01 12:19:56.861254] INFO: jiekou: 返回结果:{'code': 40002, 'text': '你想和我说什么呢?'}
|
||||
[2018-02-01 12:19:56.863254] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:19:56.865254] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:19:56.867254] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:19:56.868254] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:GET
|
||||
[2018-02-01 12:19:56.870254] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:None
|
||||
[2018-02-01 12:19:56.872255] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:20:06.977833] INFO: jiekou: 当前模块 requests封装
|
||||
[2018-02-01 12:20:07.069838] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2018-02-01 12:20:07.070838] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2018-02-01 12:20:07.089839] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:20:07.090839] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:POST
|
||||
[2018-02-01 12:20:07.091839] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:None
|
||||
[2018-02-01 12:20:07.127841] INFO: jiekou: 返回结果:{'code': 40001, 'text': '亲爱的,key不对哦。'}
|
||||
[2018-02-01 12:20:07.128841] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:20:07.128841] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:20:07.129841] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:20:07.130841] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:POST
|
||||
[2018-02-01 12:20:07.130841] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:None
|
||||
[2018-02-01 12:20:07.165843] INFO: jiekou: 返回结果:{'code': 40002, 'text': '干啥呀?'}
|
||||
[2018-02-01 12:20:07.166843] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:20:07.166843] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:20:07.167843] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:20:07.167843] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:GET
|
||||
[2018-02-01 12:20:07.168843] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:None
|
||||
[2018-02-01 12:20:07.168843] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:21:11.709535] INFO: jiekou: 当前模块 requests封装
|
||||
[2018-02-01 12:21:11.799540] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2018-02-01 12:21:11.800540] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2018-02-01 12:21:11.819541] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:21:11.820541] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:POST
|
||||
[2018-02-01 12:21:11.821541] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:None
|
||||
[2018-02-01 12:21:11.991551] INFO: jiekou: 返回结果:{'code': 40001, 'text': '亲爱的,key不对哦。'}
|
||||
[2018-02-01 12:21:11.992551] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:21:11.993551] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:21:11.994551] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:21:11.994551] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:POST
|
||||
[2018-02-01 12:21:11.995551] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:None
|
||||
[2018-02-01 12:21:12.077556] INFO: jiekou: 返回结果:{'code': 40002, 'text': '此时无声胜有声?'}
|
||||
[2018-02-01 12:21:12.078556] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:21:12.079556] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:21:12.079556] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:21:12.080556] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:GET
|
||||
[2018-02-01 12:21:12.080556] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:None
|
||||
[2018-02-01 12:21:12.081556] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:35:13.765698] INFO: jiekou: 当前模块 requests封装
|
||||
[2018-02-01 12:35:13.880704] INFO: jiekou: 当前模块 生成数据驱动所用数据
|
||||
[2018-02-01 12:35:13.880704] INFO: jiekou: 当前模块 解析测试用例文件
|
||||
[2018-02-01 12:35:13.901706] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:35:13.902706] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:POST
|
||||
[2018-02-01 12:35:13.902706] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:None
|
||||
[2018-02-01 12:35:13.959709] INFO: jiekou: 返回结果:{'code': 40001, 'text': '亲爱的,key不对哦。'}
|
||||
[2018-02-01 12:35:13.960709] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:35:13.960709] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:35:13.961709] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:35:13.961709] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:POST
|
||||
[2018-02-01 12:35:13.962709] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:None
|
||||
[2018-02-01 12:35:13.994711] INFO: jiekou: 返回结果:{'code': 40002, 'text': '你想说什么就直说,不用藏在心里哈~'}
|
||||
[2018-02-01 12:35:13.994711] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:35:13.995711] INFO: jiekou: 测试用例执行完毕
|
||||
[2018-02-01 12:35:13.996711] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:35:13.996711] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:GET
|
||||
[2018-02-01 12:35:13.997711] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:None
|
||||
[2018-02-01 12:35:13.998711] INFO: jiekou: 测试用例执行完毕
|
||||
@@ -7,7 +7,6 @@
|
||||
from Public.pyreport_excel import create
|
||||
import os,threading,datetime
|
||||
from testCase.case import testinterface
|
||||
from Public.emmail import sendemali
|
||||
from Public.get_excel import datacel
|
||||
from Public.create_report import save_result
|
||||
def start():
|
||||
@@ -23,10 +22,5 @@ def start():
|
||||
create(filename=filepath,list_fail=list_fail, list_pass=list_pass, list_json=list_json, listurls=listurl,
|
||||
listkeys=listkey,listconeents=listconeent, listfangshis=listfangshi, listqiwangs=listqiwang,
|
||||
listids=listid, listrelust=listrelust, listnames=listname)
|
||||
def teThread():
|
||||
st = datetime.datetime.now()
|
||||
m = threading.Thread(target=start, args=())
|
||||
m.run()
|
||||
end = datetime.datetime.now()
|
||||
if __name__ == '__main__':
|
||||
teThread()
|
||||
start()
|
||||
14
run_html.py
14
run_html.py
@@ -1,12 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Author : leizi
|
||||
import unittest,os,datetime,time
|
||||
import os,datetime,time
|
||||
from testCase.case import testinterface
|
||||
from Public.py_Html import createHtml
|
||||
from Public.get_excel import datacel
|
||||
from Public.emmail import sendemali
|
||||
from Public.create_report import save_result
|
||||
import threading
|
||||
def stast():
|
||||
starttime=datetime.datetime.now()
|
||||
day= time.strftime("%Y%m%d%H%M", time.localtime(time.time()))
|
||||
@@ -22,13 +20,5 @@ def stast():
|
||||
endtime=endtime,passge=list_pass,fail=list_fail,
|
||||
id=listid,name=listname,key=listkey,coneent=listconeent,url=listurl,meth=listfangshi,
|
||||
yuqi=listqiwang,json=list_json,relusts=listrelust)
|
||||
# sendemali(filepath)
|
||||
def tThread():
|
||||
m=threading.Thread(target=stast,args=())
|
||||
m.run()
|
||||
if __name__ == '__main__':
|
||||
tThread()
|
||||
|
||||
|
||||
|
||||
|
||||
stast()
|
||||
@@ -12,4 +12,4 @@ if __name__=='__main__':
|
||||
file = os.path.join(file_dir, (now + '.html'))
|
||||
re_open = open(file, 'wb')
|
||||
runner = BSTestRunner.BSTestRunner(stream=re_open, title='接口测试报告', description='测试结果')
|
||||
runner.run(suite)
|
||||
m=runner.run(suite)
|
||||
@@ -1,8 +1,8 @@
|
||||
from Interface.testFengzhuang import TestApi
|
||||
from Public.get_excel import datacel,makedata
|
||||
from Public.log import LOG,logger
|
||||
from Public.get_excel import makedata
|
||||
from Public.log import LOG
|
||||
from Public.panduan import assertre
|
||||
import ddt,unittest,time,os
|
||||
import ddt,unittest
|
||||
data_test=makedata()
|
||||
@ddt.ddt
|
||||
class MyTest(unittest.TestCase):
|
||||
@@ -17,4 +17,4 @@ class MyTest(unittest.TestCase):
|
||||
apijson = api.getJson()
|
||||
LOG.info('返回结果:%s'%apijson)
|
||||
qingwang=assertre(asserqingwang=data_test['qiwang'])
|
||||
self.assertNotEqual(dict(qingwang),dict(apijson),msg='预期和返回不一致')
|
||||
self.assertNotEqual(dict(qingwang),dict(apijson),msg='预期和返回不一致')
|
||||
306
test_Report/2018-0201.html
Normal file
306
test_Report/2018-0201.html
Normal file
@@ -0,0 +1,306 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<title>接口测试报告</title>
|
||||
<meta name="generator" content="BSTestRunner 0.8.4"/>
|
||||
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">
|
||||
|
||||
<style type="text/css" media="screen">
|
||||
|
||||
/* -- css div popup ------------------------------------------------------------------------ */
|
||||
.popup_window {
|
||||
display: none;
|
||||
position: relative;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
/*border: solid #627173 1px; */
|
||||
padding: 10px;
|
||||
background-color: #99CCFF;
|
||||
font-family: "Lucida Console", "Courier New", Courier, monospace;
|
||||
text-align: left;
|
||||
font-size: 10pt;
|
||||
width: 1200px;
|
||||
}
|
||||
|
||||
/* -- report ------------------------------------------------------------------------ */
|
||||
|
||||
#show_detail_line .label {
|
||||
font-size: 85%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#show_detail_line {
|
||||
margin: 2em auto 1em auto;
|
||||
}
|
||||
|
||||
#total_row { font-weight: bold; }
|
||||
.hiddenRow { display: none; }
|
||||
.testcase { margin-left: 2em; }
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<script language="javascript" type="text/javascript"><!--
|
||||
output_list = Array();
|
||||
|
||||
/* level - 0:Summary; 1:Failed; 2:All */
|
||||
function showCase(level) {
|
||||
trs = document.getElementsByTagName("tr");
|
||||
for (var i = 0; i < trs.length; i++) {
|
||||
tr = trs[i];
|
||||
id = tr.id;
|
||||
if (id.substr(0,2) == 'ft') {
|
||||
if (level < 1) {
|
||||
tr.className = 'hiddenRow';
|
||||
}
|
||||
else {
|
||||
tr.className = '';
|
||||
}
|
||||
}
|
||||
if (id.substr(0,2) == 'pt') {
|
||||
if (level > 1) {
|
||||
tr.className = '';
|
||||
}
|
||||
else {
|
||||
tr.className = 'hiddenRow';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function showClassDetail(cid, count) {
|
||||
var id_list = Array(count);
|
||||
var toHide = 1;
|
||||
for (var i = 0; i < count; i++) {
|
||||
tid0 = 't' + cid.substr(1) + '.' + (i+1);
|
||||
tid = 'f' + tid0;
|
||||
tr = document.getElementById(tid);
|
||||
if (!tr) {
|
||||
tid = 'p' + tid0;
|
||||
tr = document.getElementById(tid);
|
||||
}
|
||||
id_list[i] = tid;
|
||||
if (tr.className) {
|
||||
toHide = 0;
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < count; i++) {
|
||||
tid = id_list[i];
|
||||
if (toHide) {
|
||||
document.getElementById('div_'+tid).style.display = 'none'
|
||||
document.getElementById(tid).className = 'hiddenRow';
|
||||
}
|
||||
else {
|
||||
document.getElementById(tid).className = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function showTestDetail(div_id){
|
||||
var details_div = document.getElementById(div_id)
|
||||
var displayState = details_div.style.display
|
||||
// alert(displayState)
|
||||
if (displayState != 'block' ) {
|
||||
displayState = 'block'
|
||||
details_div.style.display = 'block'
|
||||
}
|
||||
else {
|
||||
details_div.style.display = 'none'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function html_escape(s) {
|
||||
s = s.replace(/&/g,'&');
|
||||
s = s.replace(/</g,'<');
|
||||
s = s.replace(/>/g,'>');
|
||||
return s;
|
||||
}
|
||||
|
||||
/* obsoleted by detail in <div>
|
||||
function showOutput(id, name) {
|
||||
var w = window.open("", //url
|
||||
name,
|
||||
"resizable,scrollbars,status,width=800,height=450");
|
||||
d = w.document;
|
||||
d.write("<pre>");
|
||||
d.write(html_escape(output_list[id]));
|
||||
d.write("\n");
|
||||
d.write("<a href='javascript:window.close()'>close</a>\n");
|
||||
d.write("</pre>\n");
|
||||
d.close();
|
||||
}
|
||||
*/
|
||||
--></script>
|
||||
|
||||
<div class="container">
|
||||
<div class='heading'>
|
||||
<h1>接口测试报告</h1>
|
||||
<p><strong>Start Time:</strong> 2018-02-01 12:35:13</p>
|
||||
<p><strong>Duration:</strong> 0:00:00.099005</p>
|
||||
<p><strong>Status:</strong> <span class="text text-success">Pass <strong>2</strong></span> <span class="text text-warning">Error <strong>1</strong></span></p>
|
||||
|
||||
<p class='description'>测试结果</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<p id='show_detail_line'>
|
||||
<span class="label label-primary" onclick="showCase(0)">Summary</span>
|
||||
<span class="label label-danger" onclick="showCase(1)">Failed</span>
|
||||
<span class="label label-default" onclick="showCase(2)">All</span>
|
||||
</p>
|
||||
<table id='result_table' class="table">
|
||||
<thead>
|
||||
<tr id='header_row'>
|
||||
<th>Test Group/Test case</td>
|
||||
<th>Count</td>
|
||||
<th>Pass</td>
|
||||
<th>Fail</td>
|
||||
<th>Error</td>
|
||||
<th>View</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr class='text text-warning'>
|
||||
<td>testCase.ddt_case.MyTest</td>
|
||||
<td>3</td>
|
||||
<td>2</td>
|
||||
<td>0</td>
|
||||
<td>1</td>
|
||||
<td><a class="btn btn-xs btn-primary"href="javascript:showClassDetail('c1',3)">Detail</a></td>
|
||||
</tr>
|
||||
|
||||
<tr id='pt1.1' class='hiddenRow'>
|
||||
<td class='text text-success'><div class='testcase'>test_api_1</div></td>
|
||||
<td colspan='5' align='center'>
|
||||
|
||||
<!--css div popup start-->
|
||||
<a class="popup_link btn btn-xs btn-default" onfocus='this.blur();' href="javascript:showTestDetail('div_pt1.1')" >
|
||||
pass</a>
|
||||
|
||||
<div id='div_pt1.1' class="popup_window">
|
||||
<div style='text-align: right;cursor:pointer'>
|
||||
<a onfocus='this.blur();' onclick="document.getElementById('div_pt1.1').style.display = 'none' " >
|
||||
[x]</a>
|
||||
</div>
|
||||
<pre>
|
||||
|
||||
pt1.1: [2018-02-01 12:35:13.901706] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:35:13.902706] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:POST
|
||||
[2018-02-01 12:35:13.902706] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api,key:aaaa,参数:sasa,请求方式:None
|
||||
[2018-02-01 12:35:13.959709] INFO: jiekou: 返回结果:{'code': 40001, 'text': '亲爱的,key不对哦。'}
|
||||
[2018-02-01 12:35:13.960709] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:35:13.960709] INFO: jiekou: 测试用例执行完毕
|
||||
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
<!--css div popup end-->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id='pt1.2' class='hiddenRow'>
|
||||
<td class='text text-success'><div class='testcase'>test_api_2</div></td>
|
||||
<td colspan='5' align='center'>
|
||||
|
||||
<!--css div popup start-->
|
||||
<a class="popup_link btn btn-xs btn-default" onfocus='this.blur();' href="javascript:showTestDetail('div_pt1.2')" >
|
||||
pass</a>
|
||||
|
||||
<div id='div_pt1.2' class="popup_window">
|
||||
<div style='text-align: right;cursor:pointer'>
|
||||
<a onfocus='this.blur();' onclick="document.getElementById('div_pt1.2').style.display = 'none' " >
|
||||
[x]</a>
|
||||
</div>
|
||||
<pre>
|
||||
|
||||
pt1.2: [2018-02-01 12:35:13.961709] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:35:13.961709] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:POST
|
||||
[2018-02-01 12:35:13.962709] INFO: jiekou: 输入参数:url:http://www.tuling123.com/openapi/api
|
||||
,key:dfeb1cc8125943d29764a2f2f5c33739,参数:,请求方式:None
|
||||
[2018-02-01 12:35:13.994711] INFO: jiekou: 返回结果:{'code': 40002, 'text': '你想说什么就直说,不用藏在心里哈~'}
|
||||
[2018-02-01 12:35:13.994711] INFO: jiekou: 当前模块 断言测试结果
|
||||
[2018-02-01 12:35:13.995711] INFO: jiekou: 测试用例执行完毕
|
||||
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
<!--css div popup end-->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id='ft1.3' class='none'>
|
||||
<td class='text text-warning'><div class='testcase'>test_api_3</div></td>
|
||||
<td colspan='5' align='center'>
|
||||
|
||||
<!--css div popup start-->
|
||||
<a class="popup_link btn btn-xs btn-default" onfocus='this.blur();' href="javascript:showTestDetail('div_ft1.3')" >
|
||||
error</a>
|
||||
|
||||
<div id='div_ft1.3' class="popup_window">
|
||||
<div style='text-align: right;cursor:pointer'>
|
||||
<a onfocus='this.blur();' onclick="document.getElementById('div_ft1.3').style.display = 'none' " >
|
||||
[x]</a>
|
||||
</div>
|
||||
<pre>
|
||||
|
||||
ft1.3: [2018-02-01 12:35:13.996711] INFO: jiekou: 测试用例开始执行
|
||||
[2018-02-01 12:35:13.996711] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:GET
|
||||
[2018-02-01 12:35:13.997711] INFO: jiekou: 输入参数:url:https://api.douban.com/v2/photo/:id,key:,参数:,请求方式:None
|
||||
[2018-02-01 12:35:13.998711] INFO: jiekou: 测试用例执行完毕
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\Administrator\AppData\Roaming\Python\Python36\site-packages\ddt.py", line 139, in wrapper
|
||||
return func(self, *args, **kwargs)
|
||||
File "C:\Users\Administrator\Desktop\xuexi\jiejko\testCase\ddt_case.py", line 17, in test_api
|
||||
apijson = api.getJson()
|
||||
File "C:\Users\Administrator\Desktop\xuexi\jiejko\Interface\testFengzhuang.py", line 27, in getJson
|
||||
json_data = self.testapi()
|
||||
File "C:\Users\Administrator\Desktop\xuexi\jiejko\Interface\testFengzhuang.py", line 21, in testapi
|
||||
response = reques.get(self.url,self.parem)
|
||||
TypeError: get() takes 2 positional arguments but 3 were given
|
||||
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
<!--css div popup end-->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr id='total_row'>
|
||||
<td>Total</td>
|
||||
<td>3</td>
|
||||
<td class="text text-success">2</td>
|
||||
<td class="text text-danger">0</td>
|
||||
<td class="text text-warning">1</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
<div id='ending'> </div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
Reference in New Issue
Block a user