[本文出自天外归云的博客园]

这两天用python写了一个自动化测试框架,取名为Auty。准备用来做Web方面的接口测试,以下为Auty框架一步一步的搭建过程——

首先在这里我要感谢我的大师兄朱勃的指点、交流和帮助!

Auty文件夹结构介绍

1. actions文件夹:包含了和业务相关的包含可复用方法的脚本文件,根据业务的不同可以在actions文件夹下创建不同的业务文件夹;
2. constants文件夹:包含了常量初始化的python脚本文件,根据业务划分可以再创建子文件夹或多个常量文件;
3. data文件夹:包含了测试用的数据;
4. lib文件夹:包含了支持框架运行的python文件;
5. log文件夹:包含了运行测试过程中生成的日志文件;
6. results文件夹:包含了测试结果文件;
7. scripts文件夹:包含了scripts文件夹和selections文件夹;
  1)scripts文件夹下包含了测试脚本(可根据业务划分成多个子目录);
  2)selections文件夹下包含了suite文件(包含了需要执行的脚本路径集合);
8. utils文件夹:包含了和业务逻辑无关的包含可复用方法的脚本文件;

Auty文件结构介绍

1. Auty文件夹下:
  1)__init__.py文件:包结构所必需文件(以下所有涉及可调用脚本的文件夹下均需有此文件);
  2)config.txt文件:Auty框架配置说明文件;
  3)recovery.py文件:垃圾代码回收文件(用来回收执行测试过程中因故障未能自动删除的自动生成的代码);
  4)requirements文件:包含了框架所需要安装的python库信息;
  5)setup.py文件:执行脚本以安装requirements文件中所包含的python库;
  6)start.py文件:执行脚本以启动接口自动化测试;
2. lib文件夹下:
  1)exe_deco.py文件:包含修饰脚本运行时方法的文件;
  2)execute_selection.py文件:包含运行suite集合下脚本方法的文件;
  3)generate_html.py文件:包含根据生成的csv格式测试结果文件生成html类型测试结果文件方法的文件;
  4)generate_result.py文件:包含生成csv格式测试结果方法的文件;
  5)read_selection.py文件:包含读取可执行的脚本列表方法的文件;
  6)recovery_code.py文件:包含垃圾代码回收方法的文件;
  7)write_log.py文件:包含生成日志文件方法的文件;
3. scripts文件夹下:
  1)create_selection.py文件:包含创建suite文件(all_scripts_selection.txt)方法的文件;

Auty使用步骤

1. 运行Auty/setup.py文件;
2. 编写接口测试python脚本并放到Auty/scripts/scripts目录(或子目录)下;
3. 运行Auty/scripts/create_selection.py文件生成Auty/scripts/all_scripts_selection.txt文件;
4. 修改Auty/scripts/all_scripts_selection.txt文件自定义test_selection.txt文件(名字随意起)并放到Auty/scripts/selections文件夹下;
5. 运行Auty/start.py文件开始接口自动化测试;
6. 在Auty/results文件夹下生成的测试结果文件中查看测试结果。

Auty编写过程

这个框架里scripts、utils、actions、contants四个文件夹中的内容是根据实际工作内容可以随意替换的,其他为Auty接口自动化测试框架必需的组成部分。由于后续开发工作比较琐碎,一些更改的代码不能及时更新到以下各篇文章中。最新代码请见:Github

第一篇——生成执行列表

第二篇——读取与执行脚本列表

第三篇——添加异常处理与日志收集

第四篇——生成测试结果报告

第五篇——调用支持、自动化安装库与配置说明

第六篇——垃圾代码回收、添加suite支持

第七篇——添加动作库和常量文件库

Auty框架表现篇——python flask框架实践

接口测试用例编写建议

框架的诞生从某种层面上讲也是为了让编写的代码更加规范化。抛开框架而言,对于接口测试用例的编写,还是要给出以下建议
1. 涉及接口中的url,不要写死在case中,要通过常量访问,将url存储在指定constant文件中(以免接口域名变更等原因造成的不可维护);
2. 测试用例中不要包含测试数据等可变信息,要设成变量,专门将变量的初始化工作在一个指定的文件中完成;
3. 测试用例中不要重复粘贴大段代码逻辑(不利于代码的走查,会造成代码冗余并提高出错几率),凡是可以复用的过程一律提取成方法,分类放置在指定的存放业务逻辑action的文件夹中;
4. 关于注释:用语一定要官方,注释的意义更多是对别人而言的,要让其他人一看就懂;一定要具体详细,不要话说一半;一定要位置准确,注释下方代码逻辑一定要与注释内容吻合而不是在注释下方过了一段代码后才开始注释所包含的内容逻辑。
 
 
 
 
 
 

一步一步教你编写与搭建自动化测试框架——python篇的更多相关文章

  1. 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)

    1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...

  2. 手把手教你使用webpack搭建vue框架

    我们在使用vue开发项目的时候,都是用vue-cli直接来搭建的.但是这是别人已经造好的轮子,我们既然要使用别人造好的轮子,我们总不能知其然而不知其所以然.所以呢,我这边文章就教你如何使用webpac ...

  3. 手把手教你用vue-cli搭建vue项目

    手把手教你用vue-cli搭建vue项目 本篇主要是利用vue-cli来搭建vue项目,其中前提是node和npm已经安装好,文章结尾将会简单提到一个简单的例子.使用vue-cli搭建项目最开始我也是 ...

  4. 《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)

    1.简介 页面对象模型(Page Object Model)在Selenium Webdriver自动化测试中使用非常流行和受欢迎,作为自动化测试工程师应该至少听说过POM这个概念.本篇介绍POM的简 ...

  5. 一步一步教你实现iOS音频频谱动画(二)

    如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第一篇:一步一步教你实现iOS音频频谱动画(一) 本文是系列文章中的第二篇,上篇讲述了音频播放和频谱数据计算,本篇讲 ...

  6. 一步一步教你实现iOS音频频谱动画(一)

    如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第二篇:一步一步教你实现iOS音频频谱动画(二) 基于篇幅考虑,本次教程分为两篇文章,本篇文章主要讲述音频播放和频谱 ...

  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(十)——一步一步教你如何撸Dapr之绑定

    如果说Actor是dapr有状态服务的内部体现的话,那绑定应该是dapr对serverless这部分的体现了.我们可以通过绑定极大的扩展应用的能力,甚至未来会成为serverless的基础.最开始接触 ...

  8. 通过Dapr实现一个简单的基于.net的微服务电商系统(十一)——一步一步教你如何撸Dapr之自动扩/缩容

    上一篇我们讲到了dapr提供的bindings,通过绑定可以让我们的程序轻装上阵,在极端情况下几乎不需要集成任何sdk,仅需要通过httpclient+text.json即可完成对外部组件的调用,这样 ...

  9. 一步一步教你如何在linux下配置apache+tomcat(转)

    一步一步教你如何在linux下配置apache+tomcat   一.安装前准备. 1.   所有组件都安装到/usr/local/e789目录下 2.   解压缩命令:tar —vxzf 文件名(. ...

随机推荐

  1. aspxshell下突破无可写可执行目录执行cmd

    try { var strPath:String = "c:\\windows\\temp\\cmd.exe", strUser:String = "everyone&q ...

  2. Golden Gate 概念和机制

    1. OGG有哪些进程 ü  Manger : manger进程是goldengate的控制进程,分别运行在源端和目标端上,它主要的作用是启动.监控.重启goldengate的其他进程,报告错误及事件 ...

  3. Unity3D中C#和js方法相互调用

    通过查找资料,Unity3D中C#和js要相互调用彼此的方法,js文件必须放在"Standard Assets". "Pro Standard Assets" ...

  4. VM配置一个待安装LUNIX系统的环境

    IT技术和行业交流群 417691667

  5. OpenGL 小游戏 贪吃蛇1(2D)

    #include "stdafx.h" #include <GL/glut.h> #include <stdlib.h> #pragma comment(l ...

  6. 使用SharpSSH连接服务器报Algorithm negotiation fail解决办法

    SharpSSH或JSCH使用diffie-hellman-group1-sha1和diffie-hellman-group-exchange-sha1密钥交换算法,而OpenSSH在6.7p1版本之 ...

  7. P1941 飞扬的小鸟

    此题很容易写出方程,由以前的知识可以迁移得,本题可以用完全背包的方法进行优化,使用滚动数组即可得到答案. //莫名奇妙60分.不知道什么细节出了错. #include <bits/stdc++. ...

  8. 孟加拉央行SWIFT攻击事件恶意木马分析(转)

    第一章 分析概述 该恶意木马样本为运行于winodws平台上的PE文件(名称:evtdiag.exe).文件大小为64KB,编译时间是2016年2月5日. 经分析,该样本为定制的攻击SWIFT客户端程 ...

  9. JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置

    众所周知,在进行接口测试的过程中,需要创建不同的场景(不同条件的输入,来验证不同的入参的返回结果).因而,在日常的自动化接口监控或商品监控等线上监控过程中,需要配置大量的入参来监控接口的返回是否正确. ...

  10. Maven应用

    Maven进行项目管理很方便,下面介绍一下学习maven中的笔记.我是在Windows上运行的          有些知识点没有试,只是收集转载,很可能存在错误 1.安装 解压缩之后,配置环境变量MA ...