我的编程空间,编程开发者的网络收藏夹
学习永远不晚

300行Python代码打造实用接口测试

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

300行Python代码打造实用接口测试

300行Python代码打造实用接口测试框架

发表于:2017-6-29 09:47  作者:Leo Lee   来源:博客

字体:大 中 小 | 上一篇 | 下一篇 | 打印 |我要投稿 | 推荐标签: Python 接口测试

  在刚开始实现ApiTestEngine的时候,卡斯(kasi)提议做一个Java版的。对于这样的建议,我当然是拒绝的,瞬即回复了他,“人生苦短,回头是岸啊”。

  当然,我没好意思跟他说的是,我不会Java啊。不过最主要的原因嘛,还是因为Python的语法简洁,可以采用很少的代码量实现丰富的功能。

  有多简洁呢?

  刚在coveralls上看了下ApiTestEngine框架的代码统计行数,总行数只有268行,还不足300行。

15201284_201706281523521ULeY.jpg

  当然,这个行数指的是框架本身的Python代码行数,不包括示例注释的行数。从上图可以看出来,LINES列是文件总行数,RELEVANT列是实际的Python代码行数。例如ate/runner.py文件,注释的行数是远多于实际代码行数的。

  最极端的一个例子是,ate/testcase.py文件中的parse函数,示例注释行数35行,Python代码只有2行。

def parse(self, testcase_template):

   """ parse testcase_template, replace all variables with bind value.

   variables marker: ${variable}.

   @param (dict) testcase_template

       {

           "request": {

               "url": "http://127.0.0.1:5000/api/users/${uid}",

               "method": "POST",

               "headers": {

                   "Content-Type": "application/json",

                   "authorization": "${authorization}",

                   "random": "${random}"

               },

               "body": "${data}"

           },

           "response": {

               "status_code": "${expected_status}"

           }

       }

   @return (dict) parsed testcase with bind values

       {

           "request": {

               "url": "http://127.0.0.1:5000/api/users/1000",

               "method": "POST",

               "headers": {

                   "Content-Type": "application/json",

                   "authorization": "a83de0ff8d2e896dbd8efb81ba14e17d",

                   "random": "A2dEx"

               },

               "body": '{"name": "user", "password": "123456"}'

           },

           "response": {

               "status_code": 201

           }

       }

   """

   return self.substitute(testcase_template)

  另外,如果算上单元测试用例的行数(731行),总的Python代码行数能达到1000行的样子。嗯,代码可以精简,但是单元测试覆盖率还是要保证的,不达到90%以上的单元测试覆盖率,真不好意思说自己做了开源项目啊。

15201284_201706281524391Uttj.jpg

  那这不足300行的Python代码,实际实现了哪些功能呢?

  对比下《接口自动化测试的最佳工程实践(ApiTestEngine)》中规划的特性,已经实现了大半(前六项),至少已经算是一个有模有样的接口测试框架了。

  支持API接口的多种请求方法,包括 GET/POST/HEAD/PUT/DELETE 等

  测试用例与代码分离,测试用例维护方式简洁优雅,支持YAML/JSON

  测试用例描述方式具有表现力,可采用简洁的方式描述输入参数和预期输出结果

  接口测试用例具有可复用性,便于创建复杂测试场景

  测试执行方式简单灵活,支持单接口调用测试、批量接口调用测试、定时任务执行测试

  具有可扩展性,便于扩展实现Web平台化

  测试结果统计报告简洁清晰,附带详尽日志记录,包括接口请求耗时、请求响应数据等

  身兼多职,同时实现接口管理、接口自动化测试、接口性能测试(结合Locust)

  后面剩下的特性还在实现的过程中,但是可以预见得到,最后框架本身总的Python代码行数也不会超过500行。

  当然,单纯地比代码行数的确是没有什么意义,写得爽写得开心才是最重要的。

  最后引用下Guido van Rossum的语录:

  Life is short, go Pythonic!


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

300行Python代码打造实用接口测试

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

300行Python代码打造实用接口测试

300行Python代码打造实用接口测试框架发表于:2017-6-29 09:47  作者:Leo Lee   来源:博客字体:大 中 小 | 上一篇 | 下一篇 | 打印 |我要投稿 | 推荐标签: Python 接口测试  在刚开始实现
2023-01-31

Python接口测试自动化的示例代码

本篇内容主要讲解“Python接口测试自动化的示例代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python接口测试自动化的示例代码”吧!1、接口请求python 特别是 python 3.
2023-06-16

如何利用python进行接口测试

这篇文章主要讲解了“如何利用python进行接口测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用python进行接口测试”吧!接口测试的坑第一个坑:POST 和 GET----GE
2023-06-30

干货丨Python接口测试自动化实战及代码示例:含get、post等方法

引言:年初参与到一个后台系统开发的项目中,里面涉及了很多接口,我做为项目组测试人员,需要对这些接口进行测试,一开始使用 postman 工具测试,很是方便。但随着接口数量的增加,不光要执行手动点击测试,而且,一旦接口参数变动,都重新更改接口
2023-06-04

Python项目实战:30行代码打造属于你的VX歌曲机器人

前言想不想自己用所学的Python知识编写属于自己的一个VX机器人呢?用Python的itchat库来实现,只有短短的几十行代码,欢迎大家一起交流,一起学习,共同进步导入第三方库
2023-06-02

怎么用Python实现数据驱动的接口自动化测试

这篇文章主要讲解了“怎么用Python实现数据驱动的接口自动化测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python实现数据驱动的接口自动化测试”吧!在接口测试的过程中,很多时
2023-06-17

python实现接口自动化测试中如何使用pymysql直连数据库

这篇文章给大家介绍python实现接口自动化测试中如何使用pymysql直连数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。实现步骤1 PyMySQL 安装启动命令行,联网的前提下键入命令: pip install
2023-06-04

怎么用一行Python代码实现ChatGPT接入微信机器人

今天小编给大家分享一下怎么用一行Python代码实现ChatGPT接入微信机器人的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录