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中实现单例模式的三种方法
Apr 08 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
May 25 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
Python IDLE清空窗口的实例
Jun 25 Python
python3利用venv配置虚拟环境及过程中的小问题小结
Aug 01 Python
python递归全排列实现方法
Aug 18 Python
django 信号调度机制详解
Jul 19 Python
python图片二值化提高识别率代码实例
Aug 24 Python
Python socket 套接字实现通信详解
Aug 27 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
python3 配置logging日志类的操作
Apr 08 Python
Python读取yaml文件的详细教程
Jul 21 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
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
PHP可变函数的使用详解
2013/06/14 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
django 多数据库及分库实现方式
2020/04/01 Python
Python如何给你的程序做性能测试
2020/07/29 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
考试退步检讨书
2014/01/15 职场文书
英文留学推荐信范文
2014/01/25 职场文书
文明班级建设方案
2014/05/15 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
2014年保育员工作总结
2014/12/02 职场文书
万能检讨书
2015/01/27 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
Redis分布式锁Redlock的实现
2021/08/07 Redis