自己折腾了一个python的自动化测试框架,梳理了一下流程,简单分享一下。

项目背景

B/S架构,进行用户界面的自动化测试

工具选择

python开发的自动化测试框架,足够灵活,可以随时根据需求进行变更,易于维护

框架思路(unittest)

采用数据驱动的设计,将数据分层出来,与业务逻辑剥离,测试人员专注测试用例,不用关注代码,提高了测试效率

测试框架介绍

测试工程的结构如下:

Data目录

存放涉及业务的资源,例如上传图片场景的图片资源

Driver目录

存放浏览器驱动文件

Excel目录

存放测试用例(重要)

4个sheet分页,如下:

PageElements分页                 –存储页面元素的关键字定位信息

TestConfig 分页               --配置信息

TestSuite 分页                 --测试用例标题

TestSteps 分页                --测试用例的执行步骤

Package目录

封装的方法简介

assertUtil.py           --断言

assert_equal                    """预期结果和实际结果 相等"""

      assert_prompt                 """页面提示信息"""

      …

base.py                --涉及系统的信息(暂时不用)

base_get_hostname     """获取本机电脑名"""

base_get_ip                 """获取本机ip"""
                   …

browserUtil.py      --浏览器的操作

      browser_title                """获取当前浏览器标题"""

browser_url                  """获取当前浏览器URL"""

excelUtil.py          --excel文件的操作

excel_open               """打开excel文件(xls)"""

excel_sheet              """指定sheet页面"""

excel_cell_data          """获取指定单元格内容"""

keysUtil.py         --键盘操作

location.py         --封装页面元素定位

login.py             --登录业务

objectMap.py     --关键字映射

ob_key_input       """根据关键字input执行页面元素查找"""

ob_key_click        """根据关键字click执行页面元素查找"""

util.py               --通用场景

ut_highlighted     """元素高亮"""

      …

Picture 目录

存放用例执行的报告

Test_case 目录

存放测试用例执行脚本

Config.py

存储常量、配置信息之类的信息

PageElements.py

存储页面元素信息

例如登录页面的3个控件:

"登录-输入用户名"                                                 --表示用户名输入框

"input>css>input[placeholder='请输入账号']"

Input                                                                 –定义的关键字

Css                                                                   –元素定位方式

input[placeholder='请输入账号']                             --元素定位表达式

测试用例执行的流程图:

步骤1:

执行TestCase_UI.py脚本,用例启动

步骤2:

读取excel目录下测试用例(*.xls)

TestConfig分页:

获取浏览器启动类型              --启动相应浏览器

获取URL地址                      --打开URL地址

步骤3:

读取TestSuite分页:

逐行读取测试用例执行标识,标识为“yes”表示执行该条用例,为“no”跳过该用例

获取“测试用例序号”

步骤4:

读取TestSteps分页:

按照“测试用例序号”读取测试用例执行步骤

例如VDT_WDGZT_001用例,存在4个步骤,逐行读取“测试步骤描述”

步骤5:

读取PageElements分页:

按照“测试步骤描述”读取关键字、页面定位元素、页面元素定位表达式

按照关键字、页面定位元素、页面元素定位表达式 定位到页面元素执行相应操作

例如如下3个步骤:

在输入框中输入“搜索资源”

单击搜索按钮

执行检查点操作

注意:

每个步骤执行完毕,根据执行的情况在测试用例中回写“测试结果”

例如“我的工作台”步骤执行成功,在TestSuite分页,“测试结果”填写“用例步骤执行成功”

相应的在TestSteps分页,测试用例1,的“测试结果”填写“用例执行成功”

如果用例步骤执行失败

例如“公共-登录用户名称检查” 步骤执行失败,在TestSuite分页,“测试结果”填写“用例步骤执行失败”,“页面截图”填写失败截图的路径

相应的在TestSteps分页,测试用例1,的“测试结果”填写“用例执行失败”

测试用例步骤出现失败的情况,则不再执行该用例的剩下的步骤,开始执行下一个测试用例

步骤6:

一条测试用例执行完毕,重复执行步骤3、4、5,直至全部测试用例执行完毕

步骤7:

用例执行完毕,输出测试报告,报告详情:

测试用例执行日志

例如在测试用例中勾选2个用例执行,执行日志如下:

(原创)Python 自动化测试框架详解的更多相关文章

  1. (转)python WSGI框架详解

    原文:https://www.cnblogs.com/shijingjing07/p/6407723.html?utm_source=itdadao&utm_medium=referral h ...

  2. python flask框架详解

    Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pi ...

  3. python WSGI框架详解

    1.web应用的本质1)浏览器发送一个HTTP请求2)服务器收到请求,生成一个HTML文档3)服务器把HTML文档作为HTTP响应的body发个浏览器4)浏览器收到HTTP响应,从HTTP Body取 ...

  4. Python开发技术详解PDF

    Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...

  5. 《python开发技术详解》|百度网盘免费下载|Python开发入门篇

    <python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby  内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...

  6. mapreduce框架详解

    hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感 ...

  7. python协程详解,gevent asyncio

    python协程详解,gevent asyncio 新建模板小书匠 #协程的概念 #模块操作协程 # gevent 扩展模块 # asyncio 内置模块 # 基础的语法 1.生成器实现切换 [1] ...

  8. python之struct详解

    python之struct详解 2018-05-23 18:20:29 醉小义 阅读数 20115更多 分类专栏: python   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...

  9. jQuery Validate验证框架详解

    转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...

随机推荐

  1. dispatch_group_t 日常使用注意事项

    一.背景简介平时在进行多线程处理任务时,有时候希望多个任务之间存在着一种联系,希望在所有的任务执行完后做一些总结性处理.那么就可以将多个任务放在一个任务组中进行统一管理.dispatch提供了相应的A ...

  2. [Git]02 如何简单使用

     本章将介绍几个最基本的,也是最常用的 Git命令,以后绝大多数时间里用到的也就是这几个命令. 初始化一个新的代码仓库,做一些适当配置:开始或停止跟踪某些文件:暂存或提交某些更新.我们还会展示如何 ...

  3. 蓝桥杯-骰子游戏-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  4. button按钮点击不刷新(前端交流学习:452892873)

    <button type="button" value="test" >确认买单</button> 可实现页面点击不刷新效果

  5. Yomob广告在cocos2dx安卓平台的Demo

    Yomob 也是一个广告平台:他的使用方式比较简单哈,这里只说说他的步骤 按照官方文档说明配置环境,我使用的是eclipse,在eclipse上自己将文件copy到项目proj.android下,覆盖 ...

  6. jQuery中的选择器(上)

    从学习jquery开始,现在已经是第三遍看锋利的jQuery这本书了,现在打算对jQuery中的各种选择器进行一下总结,主要是是为了进一步系统的巩固自己对知识的掌握,另外也可以为那些学习jQuery并 ...

  7. Java Swing 图形界面实现验证码(验证码可动态刷新)

    import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Toolkit;import j ...

  8. Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)

    横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中. --苏轼 这一块儿学的是云里雾里,咱们先从简单的入手.逐渐的拨开迷雾见太阳.本次先做List集合的三个实现类的学习笔记 List特点: ...

  9. dubbo在企业中用得多吗?

    看了阿里的dubbo,据说是一个不错的服务框架, 不过,好像Minglisoft.technology搞研发希望各位可以指点学习 想知道其他的公司用这个框架多吗?遇到的问题能否快速解决呢?抉择中...

  10. angular.js的ui-router总结

     ui-route     先有个网址,再在这个网址下写路由   子路由的搭建   我们的布局/模板文件 index.html 我们通过建立一个主文件来引入我们所需要的所有资源以开始我们的项目 ,这里 ...