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中的Cookie模块使用
Jul 06 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
Python对数据进行插值和下采样的方法
Jul 03 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
python word转pdf代码实例
Aug 16 Python
详解Python3迁移接口变化采坑记
Oct 11 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
用Python绘制漫步图实例讲解
Feb 26 Python
Django实现列表页商品数据返回教程
Apr 03 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
May 15 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
php 不同编码下的字符串长度区分
2009/09/26 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
Python实现的简单算术游戏实例
2015/05/26 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
python日志logging模块使用方法分析
2019/05/23 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
大学生收银员求职信分享
2014/01/02 职场文书
企业总经理职责
2014/02/02 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
小区推广策划方案
2014/06/06 职场文书
诚信考试标语
2014/06/24 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
教师节寄语2015
2015/03/23 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏