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的更多相关文章

  1. Jmeter接口测试-简单分析结果数、聚合报告以及图形结果(二)

    简单分析结果数.聚合报告以及图形结果 结果树 取样器结果:返回值报200,表示执行接口调试成功 请求:发送的数据 响应数据:返回的数据 Thread Name:线程组名称 Sample Start: ...

  2. 使用AES加密的勒索类软件分析报告

    报告名称:  某勒索类软件分析报告    作者:        李东 报告更新日期: 样本发现日期: 样本类型: 样本文件大小/被感染文件变化长度: 样本文件MD5 校验值: da4ab5e31793 ...

  3. VC++ 一个简单的Log类

    在软件开发中,为程序建立Log日志是很必要的,它可以记录程序运行的状态以及出错信息,方便维护和调试. 下面实现了一个简单的Log类,使用非常简单,仅供参考. // CLogHelper.h : hea ...

  4. Gulp.js - 简单、直观的自动化项目构建工具

    Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...

  5. 简单的map转换成Bean的工具

    简单的map转换成Bean的工具 package com.sd.microMsg.util; import java.lang.reflect.Field; import java.lang.refl ...

  6. Tsar 服务器系统和应用信息的采集报告工具

    Tsar介绍 Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告工具,如收集服务器的系统信息(cpu,mem等),以及应用数据(nginx.swift等),收集到的数据存储在服务器磁盘上,可以 ...

  7. Redis操作Hash工具类封装,Redis工具类封装

    Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...

  8. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  9. Property工具类,Properties文件工具类,PropertiesUtils工具类

    Property工具类,Properties文件工具类,PropertiesUtils工具类 >>>>>>>>>>>>>& ...

随机推荐

  1. 简单解析nestJS目录

    使用Nest CLI设置新项目非常简单 .只需确保 安装了npm,然后在OS终端中使用以下命令: $ npm i -g @nestjs/cli $ nest new project-name $ cd ...

  2. ArrayBlockingQueue源码分析

    ArrayBlockingQueue是一个基于数组实现的有界的阻塞队列. 属性 //底层存储元素的数组.为final说明一旦初始化,容量不可变,所以是有界的. final Object[] items ...

  3. Vue.js 2.x笔记:状态管理Vuex(7)

    1. Vuex简介与安装 1.1 Vuex简介 Vuex是为vue.js应用程序开发的状态管理模式,解决的问题: ◊ 组件之间的传参,多层嵌套组件之间的传参以及各组件之间耦合度过高问题 ◊ 不同状态中 ...

  4. springboot aop 拦截接口执行时间

    /** * @description: 记录接口执行时间日志的记录 * @author: * @create 2018-12-27 16:32 */ @Target(ElementType.METHO ...

  5. mysql-SELECT子句的顺序

  6. confluence6.x安装

    一 简介 confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它可以实现团队成员之间的协作和知识共享. 网上有关confluence的教程比较多,在此我们以confl ...

  7. LUYA-CDM

    下载链接:https://pan.baidu.com/s/11Lq3IWcAcAs9gYbq4mYm1Q 密码:n1kz

  8. mysql优化 | 存储引擎,建表,索引,sql的优化建议

    个人对于选择存储引擎,建表,建索引,sql优化的一些总结,给读者提供一些参考意见 推荐访问我的个人网站,排版更好看: https://chenmingyu.top/mysql-optimize/ 存储 ...

  9. leveldb实现原理

    LevelDb日知录之一:LevelDb 101 说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanja ...

  10. Python正则表达式指南(转)

    目录 Python正则表达式指南(转) 0.防走丢 1. 正则表达式基础 1.1. 简单介绍 1.2. 数量词的贪婪模式与非贪婪模式 1.3. 反斜杠的困扰 1.4. 匹配模式 2. re模块 2.1 ...