简单的接口测试类和测试生成报告工具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工具类 >>>>>>>>>>>>>& ...
随机推荐
- MYSQL 双主配置
MYSQL1. 版本号:5.7.243. 部署方式:双主部署,两台机器即是主又是备 ,双向拷贝,可以同时写入.4. 安装部署路径: a) /home/softb) 配置路径 /etc/my.cnfc) ...
- linux上面sqlserver数据库的操作
sqlserver2017可以安装到linux也不是什么新鲜事, centos安装好sqlserver后有一写操作 systemctl status mssql-server:查看sqlserver的 ...
- 2019-04-28 Mybatis generator逆向工程生成的Example代码分析
今天主要对Mybatis generator生成的DAO层等进行分析,讲解Example类的使用和扩展 1.先在数据库建表 CREATE TABLE `department` ( `fid` ) NO ...
- 偶写的第一个控件,一个用选择代替输入的Edit控件…
FDataSource :=TDataSource.Create(self); FDBGrid.FreeNotification(self); FADOQuery.FreeNotification(s ...
- 南邮 base64全家桶
这几天不想学逆向 做做crypto(菜还瞎j2做)..... 题目: 全家桶全家桶全家桶!我怎么饿了......密文(解密前删除回车):R1pDVE1NWlhHUTNETU4yQ0dZWkRNTUpY ...
- Redis读取出错,JSON序列化的问题
报错 org.springframework.web.util.NestedServletException: Request processing failed; nested exception ...
- JS学习笔记Day17
一. 创建对象的方法 (一)在了解原型链之前,首先先了解一下创建对象的几种方式,介绍以下三种. 代码: <script type="text/javascript"> ...
- flask 基础语法学习
回顾 #6行flask from flask import Flask app = Flask(__name__) @app.route("/") def index(): ret ...
- jQuery 条件搜索查询 实时取值 升降序排序
一.鼠标点击获取搜索条件中的被选中的值 创建方法 getAttrValue() 方法,每次的 .click 都要调用 function getAttrValue(){} 例如,把选中的值给到属性 ...
- mysql的order by注入
最近在做一些漏洞盒子后台项目的总结,在盒子众多众测项目中,注入类的漏洞占比一直较大.其中Order By注入型的漏洞也占挺大一部分比例,这类漏洞也是白帽子乐意提交的类型(奖金高.被过滤概览小).今天给 ...