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 相关文章推荐
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
python模块之StringIO使用示例
Apr 08 Python
Python3 操作符重载方法示例
Nov 23 Python
Numpy掩码式数组详解
Apr 17 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
python 实现绘制整齐的表格
Nov 18 Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 Python
使用 Python 清理收藏夹里已失效的网站
Dec 03 Python
wxPython修改文本框颜色过程解析
Feb 14 Python
python中filter,map,reduce的作用
Jun 10 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
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
PHP7多线程搭建教程
2017/04/21 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
js indexOf()定义和用法
2012/10/21 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python中的XML库4Suite Server的介绍
2015/04/14 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
python字符串反转的四种方法详解
2019/12/02 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
python实现简单颜色识别程序
2020/02/19 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
《童年》教学反思
2014/02/18 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
政审证明材料
2015/06/19 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
MySQL慢查询优化解决问题
2022/03/17 MySQL