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 相关文章推荐
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
Python实现给qq邮箱发送邮件的方法
May 28 Python
Python 的描述符 descriptor详解
Feb 27 Python
Django中使用Celery的方法示例
Nov 29 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
Python用input输入列表的实例代码
Feb 07 Python
如何使用Python抓取网页tag操作
Feb 14 Python
python梯度下降算法的实现
Feb 24 Python
python和js交互调用的方法
Jun 23 Python
Python如何使用ConfigParser读取配置文件
Nov 12 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制作静态网站的模板框架(三)
2006/10/09 PHP
一个简单的域名注册情况查询程序
2006/10/09 PHP
php查询whois信息的方法
2015/06/08 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
js post方式传递提交的实现代码
2010/05/31 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
python登陆asp网站页面的实现代码
2015/01/14 Python
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
python使用分治法实现求解最大值的方法
2015/05/12 Python
在Python中处理时间之clock()方法的使用
2015/05/22 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
绿色城市实施方案
2014/03/19 职场文书
读书之星事迹材料
2014/05/12 职场文书
节电标语大全
2014/06/23 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
五年级上册复习计划
2015/01/19 职场文书
平遥古城导游词
2015/02/03 职场文书
老公保证书怎么写
2015/02/26 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
python区块链持久化和命令行接口实现简版
2022/05/25 Python