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

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

有多简洁呢?

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

当然,这个行数指的是框架本身的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%以上的单元测试覆盖率,真不好意思说自己做了开源项目啊。

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

对比下《接口自动化测试的最佳工程实践(ApiTestEngine)》中规划的特性,已经实现了大半(前六项),至少已经算是一个有模有样的接口测试框架了。支持API接口的多种请求方法,包括 GET/POST/HEAD/PUT/DELETE 等

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

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

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

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

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

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

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

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

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

最后引用下Guido van Rossum的语录:Life is short, go Pythonic!

《接口自动化测试的最佳工程实践(ApiTestEngine)》

《ApiTestEngine 演化之路(0)开发未动,测试先行》

《ApiTestEngine 演进之路(1)搭建基础框架》

ApiTestEngine GitHub源码

最后的最后

《ApiTestEngine 演进之路》系列文章还在继续写,只是前几天主要精力在编码实现上,博客方面没有同步更新,接下来我会整理好思路,继续完成余下的部分。

另外,如果大家对Python编程感兴趣,给大家推荐一个专注Python原创技术分享的公众号,⎡Python之禅⎦(VTtalk),里面关于Python的干货非常多,讲解也很通俗易懂,现在我如果有理解得不够透彻的概念,基本都会先到这个公众号里面去搜索下。

三百行python代码的项目_300行Python代码打造实用接口测试框架相关推荐

  1. 【C++编程语言】严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C3848 具有类型“const MyCompare”的表达式会丢失一些 const-volatile 限定符以调用“bool

    问题描述:把set容器的内置排序算法改变时,使用仿函数 但是出现了一下错误 修改前 //set容器排序 class MyCompare {public:bool operator()( int v1, ...

  2. 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 无法将“obj\Debug\上位机.exe”复制到“bin\Debug\上位机.exe”。超出了重试计数 10。失败

    项目场景: 提示:Visual studio常见bug: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 无法将"obj\Debug\上位机.exe"复制到"bi ...

  3. 严重性 代码 说明 项目 文件 行 禁止显示状态 警告 CS8032 无法从...创建分析器...的实例: 未能加载文件或程序集...或它的某一个依赖项。系统找不到指定的文件

    错误信息:严重性 代码 说明 项目 文件 行 禁止显示状态 警告 CS8032 无法从 C:\Users\Administrator\Desktop\SVG-master\Generators\bin ...

  4. 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2038 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MDd_DynamicDe

    系列文章目录 文章目录 系列文章目录 前言 一.错误原因 二.解决问题![在这里插入图片描述](https://img-blog.csdnimg.cn/a8ce751feae54668aa54ffe2 ...

  5. 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 无法将“obj\Debug\上位机.exe”复制到“bin\Debug\上位机.exe”。超出了重试计数 10。失败。

    ** 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 无法将"obj\Debug\上位机.exe"复制到"bin\Debug\上位机.exe".超出了重 ...

  6. 严重性 代码 说明 项目 文件 行 禁止显示状态

    严重性    代码    说明    项目    文件    行    禁止显示状态 错误    LNK2019    无法解析的外部符号 "public: void __thiscall ...

  7. pycharm创建python工程_使用Pycharm(Python工具)新建项目及创建Python文件的教程

    创建项目 首先打开Pycharm 勾选I confirm that I have read and accept the terms of this User Agreement 接下来选择Don't ...

  8. Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...

    资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...

  9. python爬虫小项目挣钱兼职,python程序员兼职平台

    python爬虫去哪接单 python爬虫接单的方式有两种一.接定制需求的单子爬虫定制的需求其实很多,比如 "爬取某某电商网站的评论",这类需求一般是按照爬取数据量的大小来收费,价 ...

最新文章

  1. SAP Ariba——全球最大的采购服务平台
  2. 世界人口钟实时数据_用数字孪生重新定义智慧城市,美象VR推出MxDATA智慧城市CIM数据可视化平台...
  3. android Adapter使用详解
  4. 通过浏览器下载服务端图片到客户端
  5. mybatis association表关联与rowbounds共同使用时的异常及其解决方案
  6. ORACLE包和过程依赖关系测试
  7. 【struts2】struts2拦截器
  8. 企业管理软件随想-透视-包容,无形思想-有形方便
  9. Symbian手记【三】 —— Symbian的描述符
  10. 数据中台 画像标签_数据中台实战:如何通过标签平台圈出产品高价值用户?...
  11. 在java中excel格式变为zip什么原因_Excel工作表中最常见的8类问题,你一定遇到过,附解决方法!...
  12. AngularJS 技术总结
  13. python编程多少钱_中山python编程课学习大概多少钱
  14. DirectX组件和安装在系统上驱动程序
  15. 从零开始学android:认识Android
  16. 如何下载使用MSDN原版系统镜像
  17. sqlserver联合查询注入
  18. 一阶系统和二阶系统动态响应分析
  19. 调侃计算机专业的笑话,段子手要失业了 计算机也懂幽默
  20. 银河麒麟系统飞腾CPU安装达梦数据库

热门文章

  1. Android Camera数据流分析全程记录(overlay方式二)
  2. onvif协议之抓图
  3. VALSE学习(一):high-resolution representation learning-高分辨率表示学习-姿态估计
  4. tensorflow GPU版本配置加速环境
  5. Apache Shiro Java 反序列化漏洞解决修复记录
  6. 前端从入门到精通(记录自己的前端学习之路)都是一些自己做的笔记
  7. matlab论坛真不活跃,MATLAB中文论坛常见问题归纳
  8. python中高阶函数和装饰器_Python高阶函数与装饰器函数的深入讲解
  9. java 复制mysql某张表_java实现mysql数据库从一张表插入数据到另一张表
  10. eclipse安装OpenExplorer插件--快速打开文件目录