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函数学习笔记
Oct 07 Python
Python脚本实现虾米网签到功能
Apr 12 Python
详解python进行mp3格式判断
Dec 23 Python
python学生管理系统代码实现
Apr 05 Python
PyQt5使用QTimer实现电子时钟
Jul 29 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
Aug 13 Python
Python使用Turtle库绘制一棵西兰花
Nov 23 Python
opencv python图像梯度实例详解
Feb 04 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
Python reduce函数作用及实例解析
May 08 Python
Python3爬虫中pyspider的安装步骤
Jul 29 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php基础教程
2015/08/26 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
PHP7多线程搭建教程
2017/04/21 PHP
Javascript 面向对象 重载
2010/05/13 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
SVG描边动画
2017/02/23 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Python如何生成树形图案
2018/01/03 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Python控制台实现交互式环境执行
2020/06/09 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
C语言编程练习
2012/04/02 面试题
企业安全生产演讲稿
2014/05/09 职场文书
数学教研活动总结
2014/07/02 职场文书
超市周年庆活动方案
2014/08/16 职场文书
诉讼和解协议书
2016/03/23 职场文书