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. Python中的 sort 和 sorted

    今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...

  2. C语言中结构体内存对齐

    先写一个小程序: #include<stdio.h> struct student  {    int a;   char k;   short m; }; int main() { st ...

  3. jqgrid的增删改查

    这个是要写的页面(需要引入下面的js页面) 1 <div class="modal-body" width="100%" style="over ...

  4. <Android基础> (六) 数据存储 Part 2 SharedPreferences方式

    6.3 SharedPreferences存储 SharedPreferences使用键值对的方式来存储数据.同时支持多种不同的数据类型. 6.3.1 将数据存储到SharedPreferences中 ...

  5. CF739E Gosha is hunting DP+wqs二分

    我是从其他博客里看到这题的,上面说做法是wqs二分套wqs二分?但是我好懒呀,只用了一个wqs二分,于是\(O(nlog^2n)\)→\(O(n^2logn)\) 首先我们有一个\(O(n^3)\)的 ...

  6. 反射与jvm

  7. c#调试快捷键

    F5 - 启动调试 Shift + F5 - 停止调试 F9 - 设置断点 Ctrl + Shift + F9 - 删除所有断点 F10 - 逐过程调试 F11 - 逐语句调试 Ctrl+R+E:  ...

  8. python全栈开发中级班全程笔记(第二模块)第一部分:文件处理

      第二模块 第一部分:文件处理与函数 #插曲之人丑就要多读书:读书能够提高个人素质与内涵,提升个人修养与能力,以及层次的提升. 推荐书籍:追风筝的人.白鹿原 电影:阿甘正传.辛德勒的名单 第一节:三 ...

  9. javaWeb使用百度编辑器上传图片的问题

    1.先看项目结构(访问网站:http://localhost:8080/baidu_edit/) 2.部署6个jar包 1)先将jsp/lib的6个jar包放入到WEB-INF/lib文件夹中 2)然 ...

  10. TF Multi-GPU single input queue

    多GPU的数据训练,feed images, labels = cifar10.distorted_inputs() split_images = tf.split(images, FLAGS.num ...