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的Flask框架中构建Web表单的教程
Jun 04 Python
python 与服务器的共享文件夹交互方法
Dec 27 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
Python3解释器知识点总结
Feb 19 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
python实现布隆过滤器及原理解析
Dec 08 Python
使用Python的Turtle库绘制森林的实例
Dec 18 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
Python中内建模块collections如何使用
May 27 Python
python实现自动打卡的示例代码
Oct 10 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
PHP 组件化编程技巧
2009/06/06 PHP
php 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
kaggle+mnist实现手写字体识别
2018/07/26 Python
python and or用法详解
2019/06/26 Python
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
师德学习感言
2014/01/31 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
效能监察建议书
2014/05/19 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
七一建党节慰问信
2015/02/14 职场文书
人事任命通知
2015/04/20 职场文书
金砖之国观后感
2015/06/11 职场文书
新人入职感言
2015/07/31 职场文书
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
Django基础CBV装饰器和中间件
2022/03/22 Python