前言

HTTP 接口测试很简单,不管工具、框架、还是平台,只要很的好的几个点就是好工具。

1、测试数据问题:比如删除接口,重复执行还能保持结果一致,必定要做数据初始化。

2、接口依赖问题:B 接口依赖 A 的返回值,C 接口依赖 B 接口的返回值。

3、加密问题:不同的接口加密规则不一样。有些用到时间戳、md5、base64、AES,如何提供种能力。

4、断言问题:有些接口返回的结构体很复杂,如何灵活的做到断言。

对于以上问题,工具和平台要么不支持,要么很麻烦,然而框架是最灵活的。

unittest/pytest + requests/https 直接上手写代码就好了,既简单又灵活。

那么同样是写代码,A 框架需要 10 行,B 框架只需要 5 行,然而又不失灵活性,那我当然是选择更少的了,毕竟,人生苦短嘛。

seldom 适合个人接口自动化项目,它有以下优势。

  • 可以写更少的代码

  • 自动生成 HTML/XML 测试报告

  • 支持参数化,减少重复的代码

  • 支持生成随机数据

  • 支持 har 文件转 case

  • 支持数据库操作

这些是 seldom 支持的功能,我们只需要集成 HTTP 接口库,并提供强大的断言即可。seldom 2.0 加入了 HTTP 接口自动化测试支持。

Seldom 兼容 Requests API 如下:


Seldom VS Request+unittest

先来看看 unittest + requests 是如何来做接口自动化的:

import unittest
import requestsclass TestAPI(unittest.TestCase):def test_get_method(self):payload = {'key1': 'value1', 'key2': 'value2'}r = requests.get("http://httpbin.org/get", params=payload)self.assertEqual(r.status_code, 200)if __name__ == '__main__':unittest.main()

这其实已经非常简洁了。同样的用例,用 seldom 实现。

# test_req.py
import seldomclass TestAPI(seldom.TestCase):def test_get_method(self):payload = {'key1': 'value1', 'key2': 'value2'}self.get("http://httpbin.org/get", params=payload)self.assertStatusCode(200)if __name__ == '__main__':seldom.main()

主要简化点在,接口的返回数据的处理。当然,seldom 真正的优势在断言、日志和报告。

har to case

对于不熟悉 Requests 库的人来说,通过 Seldom 来写接口测试用例还是会有一点难度。于是,seldom 提供了har 文件转 case 的命令。

首先,打开 fiddler 工具进行抓包,选中某一个请求。

然后,选择菜单栏:file -> Export Sessions -> Selected Sessions…

选择导出的文件格式。

点击next 保存为demo.har 文件。

最后,通过seldom -h2c 转为demo.py 脚本文件。

> seldom -h2c .\demo.har
.\demo.py
2021-06-14 18:05:50 [INFO] Start to generate testcase.
2021-06-14 18:05:50 [INFO] created file: D:\.\demo.py

demo.py 文件。

import seldomclass TestRequest(seldom.TestCase):def start(self):self.url = "http://httpbin.org/post"def test_case(self):headers = {"User-Agent": "python-requests/2.25.0", "Accept-Encoding": "gzip, deflate", "Accept": "application/json", "Connection": "keep-alive", "Host": "httpbin.org", "Content-Length": "36", "Origin": "http://httpbin.org", "Content-Type": "application/json", "Cookie": "lang=zh"}cookies = {"lang": "zh"}self.post(self.url, json={"key1": "value1", "key2": "value2"}, headers=headers, cookies=cookies)self.assertStatusCode(200)if __name__ == '__main__':seldom.main()

运行测试

打开 debug 模式seldom.run(debug=True) 运行上面的用例。

> python .\test_req.py
2021-04-29 18:19:39 [INFO] A run the test in debug mode without generating HTML report!
2021-04-29 18:19:39 [INFO]__    __________  / /___/ /___  ____ ____/ ___/ _ \/ / __  / __ \/ __ ` ___/(__  )  __/ / /_/ / /_/ / / / / / /
/____/\___/_/\__,_/\____/_/ /_/ /_/
-----------------------------------------@itest.infotest_get_method (test_req.TestAPI) ...
----------- Request 												

接口测试 Seldom 2.0 - 让接口自动化测试更简单相关推荐

  1. 【接口测试】Jenkins+ant+jmeter接口自动化测试及邮件发送

    引言 在前一篇博文里,我介绍了关于Jmeter+ant的接口测试,详见链接Jmeter+ant.本文将在上一个文章基础上,讲解Jenkins的安装及使用(全程Windows环境下).         ...

  2. python 接口测试 如何写配置文件_python接口自动化测试 - configparser配置文件解析器详细使用...

    configparser简介 ConfigParser模块已在Python 3中重命名为configparser 该模块定义了ConfigParser类. ConfigParser类实现一种基本的配置 ...

  3. python接口测试框架设计_Python3简易接口自动化测试框架设计与实现(中)

    7.Excel数据读取 用例是放在Excel中的,用xlrd来读取数据,写数据需要用到xluntils,先安装: pip install xlrd pip install xluntils 7.1.读 ...

  4. python 接口测试 如何写配置文件_python接口自动化测试二十九:yaml配置文件的写和读...

    # 先安装ruamel.yaml模块 写入配置文件: import os # 先安装ruamel.yaml模块 from ruamel import yaml # 将字典写入到yaml dict = ...

  5. 自动驾驶技术平台分享:百度Apollo开放平台8.0再升级,更简单,更便捷,更高效

    文章目录 自动驾驶技术入门,先看平台 Appllo主要优势 版本更新新特性 颠覆更新"新"架构 全新加入软件包管理机制 加入新感知模型 感知全流程开放与提效 全新PnC工具链 写在 ...

  6. python接口自动化用例管理_python接口自动化测试(六)-unittest-单个用例管理

    前面五节主要介绍了环境搭建和requests库的使用,可以使用这些进行接口请求的发送.但是如何管理接口案例?返回结果如何自动校验?这些内容光靠上面五节是不行的,因此从本节开始我们引入python单元测 ...

  7. jemeter python接口自动化测试平台_WEB接口开发与自动化测试基于PYTHON语言PDF_Python教程...

    资源名称:WEB接口开发与自动化测试 基于PYTHON语言 PDF 内容简介: <Web接口开发与自动化测试--基于Python语言>以接口测试为主线,以Web开发为切入点,全面介绍了We ...

  8. Seldom2.0: 如何更简单的实现HTTP接口测试

    背景: Seldom 1.0版本2020年1月发布到现在,更新20多个小版本,目前在做Web UI方面已经是一套比较成熟的方案了.之前,我创建过一个git分支,希望能把appium集成进来,因为app ...

  9. 全网最牛最全的Postman接口测试工具 接口自动化测试最全实用教程

    温馨提醒:本文超过10000+字,适用测试工程师入门postman工具进行接口测试,建议收藏慢慢看~~ 视频教程:年入58w的测试开发讲解的全套postman接口测试 接口自动化测试全套教程_哔哩哔哩 ...

最新文章

  1. 【jstl】jstl的基本操作
  2. Android Listview中Button按钮点击事件冲突解决办法
  3. 一文详解深度学习在命名实体识别(NER)中的应用
  4. HDOJ 2018 母牛的故事
  5. 新车可以无牌上路7天_铜竟然可以做成袜子,连穿7天不臭脚!
  6. 前端 JavaScript 之『节流』的简单代码实现
  7. (转)XP和Scrum到底有什么区别?
  8. linux中文乱码解决方案
  9. tcgames使用有延迟_心得分享:tcgames电脑玩刺激战场怎么用最流畅?
  10. H5实现点击图片放大功能
  11. SpringBoot 配置文件存放位置及读取顺序
  12. Wrong namespace. Expected 'com.example.springboot.mapper.DepartmentMapper' but found 'com.sandystar.
  13. JQuery EasyUI 结合ztrIee的后台页面开发
  14. 数学中 arg min是什么意思
  15. 【Unity Shader 中Pass相关介绍_第一篇】
  16. R语言使用epiDisplay包的summ函数计算向量数据在不同分组下的描述性统计汇总信息并可视化有序点图(名称、有效值个数、均值、中位数、标准差、最大值、最小值)
  17. 【每日蓝桥】17、一三年省赛Java组真题“带分数”
  18. FPGA进阶(2):基于I2C协议的EEPROM驱动控制
  19. 【git版本控制】| git版本控制操作命令(全)
  20. 安卓9.0 调用系统相册,拍照,图片裁剪的权限

热门文章

  1. 【免费毕设】asp.net FTP客户端设计与开发 (源代码+lunwen)
  2. php mysql英语在线考试系统+论文
  3. 【毕业设计】JSP数据库连接池的研究与实现(源代码+论文)
  4. pb 如何判断数据窗口中是否有某个字段_怎么判断数据窗口中某个字段存在重复的数据...
  5. mysql id用什么类型_mysql 证明为什么用limit时,offset很大会影响性能
  6. 9550电机_三千瓦的单相电机和同三千瓦三相电机马力相等吗?
  7. 计算机管理储存u盘无法使用,Win7系统退出U盘后重新插入电脑无法使用怎么办
  8. laravel queue java_使用 Laravel Queue 不得不明白的知识
  9. HALCON 21.11:深度学习笔记---Data(数据)(3)
  10. 十三周二次课(6月20日)