简单的接口测试类和测试生成报告工具HTMLTestRunner.py
Demo.py
#coding:utf-8
#
import requests
import json '''
data = {
'username':'jackson',
'password':'a123456'
} res = requests.post(url = 'http://127.0.0.1:8000/login/', data = data)
print res.json()
''' class RunMain:
def __init__(self,url,method, data=None):
self.res = self.run_main(url, data, method) def send_post(self,url, data):
res = requests.post(url = url ,data = data).json()
return json.dumps(res,indent=2,sort_keys=True) def send_get(self,url, data):
res = requests.get(url = url ,data = data).json()
return json.dumps(res,indent=2,sort_keys=True) def run_main(self,url, data, method):
res = None
if method == 'GET':
res = self.send_get(url, data)
else:
res = self.send_post(url,data)
return res if __name__ == "__main__":
url = 'https://coding.imooc.com/api/pjlist' data = {
'cid':'',
'page':'',
'secrect':'25546c47f8560361a25ff8240b3a858e',
'timestamp':'',
'token':'c561708e886cb11705308d76f163a9d9',
'uid':'',
'uuid':'4a5207345f879ce7be25db6d3755315b'
} run = RunMain(url, 'POST', data)
print(run.res)
Python自带的test框架unittest
demo.py
#coding:utf-8
#
import requests
import json '''
data = {
'username':'jackson',
'password':'a123456'
} res = requests.post(url = 'http://127.0.0.1:8000/login/', data = data)
print res.json()
''' class RunMain:
# def __init__(self,url,method, data=None):
self.res = self.run_main(url, data, method) def send_post(self,url, data):
res = requests.post(url = url ,data = data).json()
print(type(res))
return json.dumps(res,indent=2,sort_keys=True) def send_get(self,url, data):
res = requests.get(url = url ,data = data).json()
return json.dumps(res,indent=2,sort_keys=True) def run_main(self,url, data, method):
res = None
if method == 'GET':
res = self.send_get(url, data)
else:
res = self.send_post(url,data) return res if __name__ == "__main__":
url = 'https://coding.imooc.com/api/pjlist' data = {
'cid':'',
'page':'',
'secrect':'25546c47f8560361a25ff8240b3a858e',
'timestamp':'',
'token':'c561708e886cb11705308d76f163a9d9',
'uid':'',
'uuid':'4a5207345f879ce7be25db6d3755315b'
} run = RunMain(url, 'POST', data)
print(run.res)
test_method.py
#coding:utf-8
import unittest class TestMethod(unittest.TestCase): @classmethod
def setUpClass(cls):
print("类执行之前的方法") def setUp(self):
print('test-->setup') @classmethod
def tearDownClass(cls):
print("类执行之后的方法") def tearDown(self):
print('test-->tearDown') def test_01(self):
print("这是第一个测试方法") def test_02(self):
print("这是第2个测试方法") if __name__ == '__main__':
unittest.main()
引入unittest
Demo02.py
#coding:utf-8
#
import requests
import json '''
data = {
'username':'jackson',
'password':'a123456'
} res = requests.post(url = 'http://127.0.0.1:8000/login/', data = data)
print res.json()
''' class RunMain:
# def __init__(self,url,method, data=None):
# self.res = self.run_main(url, data, method) def send_post(self,url, data):
res = requests.post(url = url ,data = data).json()
print(type(res))
# return json.dumps(res,indent=2,sort_keys=True)
return res def send_get(self,url, data):
res = requests.get(url = url ,data = data).json()
# return json.dumps(res,indent=2,sort_keys=True)
return res def run_main(self,url, data, method):
res = None
if method == 'GET':
res = self.send_get(url, data)
else:
res = self.send_post(url,data) return res if __name__ == "__main__":
url = 'https://coding.imooc.com/api/pjlist' data = {
'cid':'',
'page':'',
'secrect':'25546c47f8560361a25ff8240b3a858e',
'timestamp':'',
'token':'c561708e886cb11705308d76f163a9d9',
'uid':'',
'uuid':'4a5207345f879ce7be25db6d3755315b'
} run = RunMain(url, 'POST', data)
print(run.res)
test_method02.py
#coding:utf-8
import unittest
from demo02 import RunMain class TestMethod(unittest.TestCase):
def setUp(self):
self.run = RunMain() def test_01(self):
print("test1") def test_02(self):
print("test2")
url = "http://coding.imooc.com/api/cate"
data = {
'cid':'',
'page':'',
'secrect':'25546c47f8560361a25ff8240b3a858e',
'timestamp':'',
'token':'b8089bb9102b565dd1025d61a5290177',
'uid':'',
'uuid':'4a5207345f879ce7be25db6d3755315b'
} res = self.run.run_main(url, data, 'POST')
# print(res['errorCode'])
print(res)
self.assertEqual(res['errorCode'], 1007, '测试失败')
print('this second case') if __name__ == "__main__":
unittest.main()
测试生成报告工具HTMLTestRunner.py
下载地址
http://tungwaiyip.info/software/HTMLTestRunner_0_8_2/HTMLTestRunner.py

将HTMLTestRunner.py拷贝到python的安装目录下

D:\python37\Lib
生成测试报告的示例:
#coding:utf-8
import unittest
from demo02 import RunMain
import HTMLTestRunner class TestMethod(unittest.TestCase):
def setUp(self):
self.run = RunMain() def test_01(self):
print("test1") def test_02(self):
print("test2")
url = "http://coding.imooc.com/api/cate"
data = {
'cid':'',
'page':'',
'secrect':'25546c47f8560361a25ff8240b3a858e',
'timestamp':'',
'token':'b8089bb9102b565dd1025d61a5290177',
'uid':'',
'uuid':'4a5207345f879ce7be25db6d3755315b'
}
run = RunMain()
res = run.run_main(url, data, 'POST')
# print(res['errorCode'])
print(res)
self.assertEqual(res['errorCode'], 1007, '测试失败')
print('this second case') if __name__ == "__main__":
# unittest.main()
filepath = "htmlreport.html"
fp = file(filepath,'wb')
suite = unittest.TestSuite()
suite.addTest(TestMethod('test_02'))
suite.addTest(TestMethod('test_01'))
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title = 'html report')
runner.run(suite)

简单的接口测试类和测试生成报告工具HTMLTestRunner.py的更多相关文章
- Jmeter接口测试-简单分析结果数、聚合报告以及图形结果(二)
简单分析结果数.聚合报告以及图形结果 结果树 取样器结果:返回值报200,表示执行接口调试成功 请求:发送的数据 响应数据:返回的数据 Thread Name:线程组名称 Sample Start: ...
- 使用AES加密的勒索类软件分析报告
报告名称: 某勒索类软件分析报告 作者: 李东 报告更新日期: 样本发现日期: 样本类型: 样本文件大小/被感染文件变化长度: 样本文件MD5 校验值: da4ab5e31793 ...
- VC++ 一个简单的Log类
在软件开发中,为程序建立Log日志是很必要的,它可以记录程序运行的状态以及出错信息,方便维护和调试. 下面实现了一个简单的Log类,使用非常简单,仅供参考. // CLogHelper.h : hea ...
- Gulp.js - 简单、直观的自动化项目构建工具
Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...
- 简单的map转换成Bean的工具
简单的map转换成Bean的工具 package com.sd.microMsg.util; import java.lang.reflect.Field; import java.lang.refl ...
- Tsar 服务器系统和应用信息的采集报告工具
Tsar介绍 Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告工具,如收集服务器的系统信息(cpu,mem等),以及应用数据(nginx.swift等),收集到的数据存储在服务器磁盘上,可以 ...
- Redis操作Hash工具类封装,Redis工具类封装
Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- Property工具类,Properties文件工具类,PropertiesUtils工具类
Property工具类,Properties文件工具类,PropertiesUtils工具类 >>>>>>>>>>>>>& ...
随机推荐
- 在MVC中Dashboard基础入门操作
DevExpress中的Dashboard这个图形插件真的很好用, 只需要在设计器绑定数据就行了,完全不用写后台代码.我也是刚学这个插件,可能还有一些我没有了解的知识点,忘各位大佬不吝赐教.我写这篇博 ...
- Javascript实现base64的加密解密
//1.加密解密方法使用: //1.加密 var str = '124中文内容'; var base = new Base64(); var result = base.encode(str); // ...
- vue.js实战——props单向数据流
Vue2.x通过props传递数据是单向的了,也就是父组件数据变化时会传递给子组件,但是反过来不行. 业务中会经常遇到两种需要改变prop的情况, 一种是父组件传递初始值进来,子组件将它作为初始值保存 ...
- 【.Net】优秀的开源框架
AutoMapper 官网:http://automapper.org/ github:https://github.com/AutoMapper/AutoMapper 文档:http://autom ...
- python 去重方法
待补充:https://www.cnblogs.com/zknublx/p/6042295.html 一.使用集合直接去重 ids = [1,4,3,3,4,2,3,4,5,6,1]ids = lis ...
- THUWC2019 游记
DAY1 开场先看 t1,发现答案的分子就是 \(\sum_i\) 颜色 \(i\) 在 A 中的出现次数乘上颜色 \(i\) 在 B 中的出现次数,分母就是 B 的长度,就去写了一个按颜色的出现次数 ...
- BZOJ bzoj1396 识别子串
题面: bzoj1396 题解: 先建出SAM,并计算right集合大小.显然符合条件的点的right集合大小为1. 对于每个right集合为1的状态显然可以算出这些状态的pos以及maxlen和mi ...
- palacehoder的自定义样式【输入框input /文本域textarea】
7.palacehoder的自定义样式[输入框input /文本域textarea] 因为每个浏览器的CSS选择器都有所差异,所以需要针对每个浏览器做单独的设定(可以在冒号前面写input和texta ...
- Nginx location 匹配规则详解
语法规则 location [=|~|~*|^~] /uri/ { … } 模式 含义 location = /uri = 表示精确匹配,只有完全匹配上才能生效 location ^~ /uri ^~ ...
- mac 连接linux服务器,用scp命令实现本地文件与服务器文件之间的互相传输
mac连接linux服务器 打开终端,切换到root权限下,切换root权限命令:sudo -i 通过ssh命令连接linux服务器:ssh root@ip地址(root是账户名) 然后根据提示输入密 ...