简单的接口测试类和测试生成报告工具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工具类 >>>>>>>>>>>>>& ...
随机推荐
- Redis之持久化(RDB AOF)
Redis 提供了 RDB 和 AOF 两种持久化方案: RDB:生成指定时间间隔内的 Redis 内存中数据快照,是一个二进制文件 dumpr.rdb AOF:记录 Redis 除了查询以外的所有写 ...
- 【MySQL 读书笔记】当我们在使用索引的时候我们在做什么
我记得之前博客我也写过关于索引使用的文章,但是并不全面,这次尽量针对重点铺全面一点. 因为索引是数据引擎层的结构我们只针对最常见使用的 Innodb 使用的 B+Tree 搜索树结构进行介绍. 每一个 ...
- Idea在@Autowired注入时报错
Could not autowire. No beans of 'UserDao' type found 如图,是因为idea检测能力太强,一旦没有找到实现类就会报错,但是我试了,这里其实是注入进来了 ...
- git异常操作解决办法合集
1. git add .后发现提交错误,想撤销 git reset head 文件名-----撤销某个文件 git reset head --hard 强制撤销当前的所有操作到上次提交的版本 2. g ...
- k8s-jenkins 自动化1
一个流水线例子: 设置参数化构建: 流水线指令: def label = "docker-${UUID.randomUUID().toString()}" podTemplate( ...
- jQuery中$.each()方法(遍历)
$.each()是对数组,json和dom结构等的遍历,说一下他的使用方法吧. 1.遍历一维数组 var arr1=['aa','bb','cc','dd']; $.each(arr1,functio ...
- POJ 1015 Jury Compromise (算竞进阶习题)
01背包 我们对于这类选或者不选的模型应该先思考能否用01背包来解. 毫无疑问物体的价值可以看成最大的d+p值,那么体积呢?题目的另一个限制条件是d-p的和的绝对值最小,这启发我们把每个物体的d-p的 ...
- [HNOI2009]最小圈(分数规划+SPFA判负环)
题解:求环长比环边个数的最小值,即求min{Σw[i]/|S|},其中i∈S.这题一眼二分,然后可以把边的个数进行转化,假设存在Σw[i]/|S|<=k,则Σw[i]-k|S|<=0,即Σ ...
- python第十三天,函数的嵌套定义,global,nonlocal关键字的使用,闭包及闭包的运算场景,装饰器
今日内容 1. 函数的嵌套定义 2.global,nonlocal关键字 3.闭包及闭包的运用场景 4.装饰器 函数的嵌套定义 1. 概念:在一个函数内部定义另一个函数 2 .为什么要有函数的嵌套定义 ...
- 七.django模型系统(一)
Ⅰ.django的ORM 1.含义 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语 ...