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写的Discuz7.2版faq.php注入漏洞工具
Aug 06 Python
python根据文件大小打log日志
Oct 09 Python
Python中的下划线详解
Jun 24 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
May 10 Python
利用Python产生加密表和解密表的实现方法
Oct 15 Python
解决tensorflow训练时内存持续增加并占满的问题
Jan 19 Python
Python sep参数使用方法详解
Feb 12 Python
通过实例了解python__slots__使用方法
Sep 14 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
PHP生成HTML静态页面实例代码
2008/08/31 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
php发送邮件的问题详解
2015/06/22 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
js style动态设置table高度
2014/10/21 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
python数据预处理方式 :数据降维
2020/02/24 Python
十佳大学生村官事迹
2014/01/09 职场文书
技术员岗位职责
2015/02/04 职场文书
小学家长意见怎么写
2015/06/03 职场文书
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers