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 httplib,smtplib使用方法
Sep 06 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
Flask框架Flask-Login用法分析
Jul 23 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
django基础学习之send_mail功能
Aug 07 Python
浅谈Django2.0 加xadmin踩的坑
Nov 15 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 Python
如何在django中添加日志功能
Feb 06 Python
python实现引用其他路径包里面的模块
Mar 09 Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 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实时显示输出
2008/10/02 PHP
深入理解PHP中的global
2014/08/19 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
php封装的验证码工具类完整实例
2016/10/19 PHP
一个简单的js树形菜单
2011/12/09 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
Python迭代用法实例教程
2014/09/08 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
python实现吃苹果小游戏
2020/03/21 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
会计自我鉴定范文
2013/10/06 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
公司授权委托书范本
2014/04/03 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
团结友爱主题班会
2015/08/13 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
Python time库的时间时钟处理
2021/05/02 Python
pytorch中[..., 0]的用法说明
2021/05/20 Python
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers