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实现三次样条插值
Dec 17 Python
在pycharm中设置显示行数的方法
Jan 16 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
Python之列表实现栈的工作功能
Jan 28 Python
详解django中url路由配置及渲染方式
Feb 25 Python
python实现抖音点赞功能
Apr 07 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
python 字段拆分详解
Dec 17 Python
Pytorch evaluation每次运行结果不同的解决
Jan 02 Python
Python高并发解决方案实现过程详解
Jul 31 Python
基于python实现坦克大战游戏
Oct 27 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
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
PHP概率计算函数汇总
2015/09/13 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
微信小程序之数据双向绑定与数据操作
2017/05/12 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
Python抽象类的新写法
2015/06/18 Python
python根据京东商品url获取产品价格
2015/08/09 Python
Python线程同步的实现代码
2018/10/03 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
Django REST framework内置路由用法
2019/07/26 Python
python解析yaml文件过程详解
2019/08/30 Python
python安装scipy的步骤解析
2019/09/28 Python
python迭代器常见用法实例分析
2019/11/22 Python
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
小学生班会演讲稿
2014/01/09 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
采购员岗位职责范本
2015/04/07 职场文书
Golang jwt身份认证
2022/04/20 Golang
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL