python+unittest+requests实现接口自动化的方法


Posted in Python onNovember 29, 2018

前言:

Requests简介

Requests 是使用Apache2 Licensed 许可证的 HTTP 库。用 Python 编写,真正的为人类着想。

Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 有点落后了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

总之,大家建议大家用Requests吧。

Requests的官方文档:http://cn.python-requests.org/zh_CN/latest/

通过下面方法安装requests

pip install requests

实例实现步骤:

1.采用unittest把每个接口写成一个个测试脚本

2.一个测试脚本中包含一个接口,但是可以包含多个测试用例(即每个接口需要进行多种情况的验证,接口测试用例名称已test开头)

3.使用discover(),该方法会自动根据测试目录匹配查找测试用例文件,并且将查找到的测试组装到测试套件中,因此可以直接通过run()方法执行discover,大大简化了测试用例的查找和执行

4.利用HTMLTestRunner生成测试报告

文档结构:project项目文件下有以下三个文件

python+unittest+requests实现接口自动化的方法

1.report存放测试结果
2.test_case存放测试用例
3.run_test_case.py执行测试用例文件

案例:

1.get接口测试用例源码

# coding:utf-8
import requests
import unittest

class get_request(unittest.TestCase):
  def setUp(self):

    self.get_url = 'https://www.baidu.com/'

  def test_post_01(self):

    url=self.get_url

    r = requests.get(url)

    print r.text

  def tearDown(self):
    pass


if __name__ == "__main__":

  unittest.main()

2.post接口测试用例源码

# coding:utf-8
import requests
import json
import unittest
class post_request(unittest.TestCase):

  def setUp(self):

    self.post_url = '..........' #根据实际接口,自己填写

    self.header = {'.......'} #根据实际内容,自己填写

  def test_post_01(self):

    """正常数据"""

    url=self.post_url

    header = self.header

    data = {""}#根据实际内容,自己填写

    #将data序列化为json格式数据,传递给data参数

    r = requests.post(url, data=json.dumps(data), headers=header)

    print r.text

  def test_post_02(self):

    """异常数据"""

    url=self.post_url

    header = self.header

    data = {""}#根据实际内容,自己填写

    r = requests.post(url, data=json.dumps(data), headers=header)

    print r.text

 

  def tearDown(self):

    pass

if __name__ == "__main__":

  unittest.main()

3.执行测试用例源码

# coding=utf-8
import unittest
import HTMLTestRunner
import time
# 相对路径
test_dir ='./test_case'
test_dir1 ='./report'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
# 定义带有当前测试时间的报告,防止前一次报告被覆盖
now = time.strftime("%Y-%m-%d %H_%M_%S")
filename = test_dir1 + '/' + now + 'result.html'
# 二进制打开,准备写入文件
fp = file(filename, 'wb')
# 定义测试报告
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告', description=u'用例执行情况')
runner.run(discover)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
python生成验证码图片代码分享
Jan 28 Python
Python 实现12306登录功能实例代码
Feb 09 Python
在Python中分别打印列表中的每一个元素方法
Nov 07 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 Python
Python字符串的修改方法实例
Dec 19 Python
python实现双色球随机选号
Jan 01 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
Python Process创建进程的2种方法详解
Jan 25 Python
python 基于DDT实现数据驱动测试
Feb 18 Python
用Python的绘图库(matplotlib)绘制小波能量谱
Apr 17 Python
python opencv旋转图片的使用方法
Jun 04 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 #Python
PyCharm+PySpark远程调试的环境配置的方法
Nov 29 #Python
利用Pycharm断点调试Python程序的方法
Nov 29 #Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 #Python
详解分布式任务队列Celery使用说明
Nov 29 #Python
Python正则表达式和元字符详解
Nov 29 #Python
Django中使用Celery的方法示例
Nov 29 #Python
You might like
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
详解JavaScript树结构
2017/01/09 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
windows下python和pip安装教程
2018/05/25 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
解决Mac下使用python的坑
2019/08/13 Python
Python类反射机制使用实例解析
2019/12/30 Python
python numpy库np.percentile用法说明
2020/06/08 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
教师岗位职责
2015/02/03 职场文书
思品教学工作总结
2015/08/10 职场文书
Python 数据可视化之Seaborn详解
2021/11/02 Python