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基础知识小结之集合
Nov 25 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
windows下ipython的安装与使用详解
Oct 20 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
Python3中在Anaconda环境下安装basemap包
Oct 21 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
PyQt5 如何让界面和逻辑分离的方法
Mar 24 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 Python
教你怎么用python实现字符串转日期
May 24 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 header示例代码(推荐)
2010/09/08 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
详细讲解JS节点知识
2010/01/31 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
使用python Django做网页
2013/11/04 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
python3 unicode列表转换为中文的实例
2018/10/26 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
三八红旗手先进事迹材料
2014/05/13 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
2014年采购员工作总结
2014/11/18 职场文书
医德医风自我评价2015
2015/03/03 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书