From 2038774138e11480a8869d9f004548bd894d1651 Mon Sep 17 00:00:00 2001 From: jerrylizilong Date: Fri, 30 Nov 2018 12:04:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E4=BE=8B=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E8=AF=B4=E6=98=8E=E4=B8=BE=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 248 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 157 insertions(+), 91 deletions(-) diff --git a/README.md b/README.md index 21cf08f..d4dca05 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,171 @@ 参考链接: -https://testerhome.com/topics/15534 +https://testerhome.com/topics/15534 : Python + flask+ selenium 自动化测试用例管理、执行平台 -https://testerhome.com/topics/15897 +https://testerhome.com/topics/15897 : UI 自动化测试用例整理举例-百度首页 -https://testerhome.com/topics/16106 +https://testerhome.com/topics/16106 : 使用 python 多进程模块 multiprocessing 并发执行测试用例 # autotest_platform 基于python+selenium的自动化测试管理、执行平台。 ## 版本要求: -python 3.4 以上 -selenium : 建议使用 3.0 以上版本 -mysql : 建议 5.5 以上 +- python 3.4 以上 +- selenium : 建议使用 3.0 以上版本 +- mysql : 建议 5.5 以上 + +## 使用说明: + +### 1. 新建用例: + +用例步骤说明: +- 每个用例步骤中通过逗号进行分隔。 +- 单个步骤的格式: 步骤名称+分隔符(|)+参数列表(参数间按@@进行分隔)。如:填写|id@@kw@@selenium, 表示步骤为“填写”,参数列表为“id、kw、selenium”。 +- 默认的参数含义:1:通过什么属性定位目标元素(可使用id、name、class、text、xpath、css等多种定位方式进行定位) 2:目标元素对应的属性值(如id = kw) 3:其他。 +- 例如:填写|id@@kw@@selenium: 代表通过 id = kw 查找到输入框,并输入 selenium 。 + +#### 1.1 用例初始化: +初始化可以有以下方式: + +- 指定浏览器类型,如 Chrome、 Firefox。 需要对应的selenium server支持。 +- 指定模拟手机型号, 如 Chrome|iPhone 6。目前只有 chrome 浏览器支持模拟手机。 +- 调用其他已封装的公共方法,如 公共方法|登录。 具体的公共方法格式与正常用例一致,但需要指定用例类型为 公共用例。 +- 公共方法支持嵌套,即一个公共方法里调用另一个公共方法。 + +#### 用例说明: + +#### 一. 使用chrome 浏览器进行测试: +例子:在百度中输入selenium,并验证查询结果是否正确。 +``` +Chrome,前往|http://www.baidu.com,填写|id@@kw@@selenium,点击|id@@su,验证|Web Browser Automation,截图 +``` +步骤解析: +``` +- Chrome: 调用 Chrome driver 进行测试。 +- 前往|http://www.baidu.com : 前往目标页。 +- 填写|id@@kw@@selenium : 在 id 为 kw 的元素中输入 selenium。 +- 点击|id@@su : 点击 id 为 su 的元素。 +- 验证|Web Browser Automation : 验证页面中是否出现 ‘Web Browser Automation’ 的文字。 +- 截图: 对当前页面进行截图并保存。 +``` + + + +#### 二. 使用chrome 浏览器模拟移动设备进行测试: +例子:模拟iPhone 6 打开网页,在百度中输入selenium,并验证查询结果是否正确。 +``` +Chrome|iPhone 6,前往|http://www.baidu.com,填写|id@@kw@@selenium,点击|id@@su,验证|Web Browser Automation,截图 +``` +步骤解析: +``` +- Chrome|iPhone 6: 调用 Chrome driver 进行测试,并设置页面大小为模拟 iPhone 6。 +``` + + + +### 2.公共用例 + +某些公共的步骤,可以封装为公共方法进行调用: +- 公共方法添加:新建用例,选择用例类型为 公共用例, 所属模块为public。 +- 公共方法调用:步骤: 公共方法|公共方法名, 如 公共方法|登录;公共方法|查询订单。 + + +#### 三. 使用公共方法进行测试: +例子: +1. 添加公共方法: 打开 chrome 浏览器,并打开百度首页 +``` +// 添加公共方法: 注意需将用例类型设置为 : 公共用例, 所属模块设置为: public, 用例名称: 打开百度首页 +Chrome,前往|http://www.baidu.com +``` +2. 分别添加测试用例:在百度首页分别点击新闻、地图、视频,并验证跳转页面是否正确。 + +``` +公共方法|打开百度首页,点击|name@@tj_trnews,验证标题|百度新闻 +公共方法|打开百度首页,点击|name@@tj_trmap,验证标题|百度地图 +公共方法|打开百度首页,点击|name@@tj_trtieba,验证标题|百度贴吧 +``` + +步骤解析: +``` +- 公共方法|打开百度首页: 根据所指定的用例名称,将公共用例的步骤拼接在当前用例之前执行。 + +``` + +效果等同于: + +``` +Chrome,前往|http://www.baidu.com,点击|name@@tj_trnews,验证标题|百度新闻 +``` + + +3. 公共方法支持嵌套,如: + +``` +// 公共方法1: 打开百度首页 +Chrome,前往|http://www.baidu.com + +//公共方法2: 进入百度新闻 +公共方法|打开百度首页,点击|name@@tj_trnews,验证标题|百度新闻 + +// 用例: 进入百度新闻页后,点击贴吧 +公共方法|进入百度新闻,点击|name@@tj_trtieba,验证标题|百度贴吧 +``` + +效果等同于: + +``` +Chrome,前往|http://www.baidu.com,点击|name@@tj_trnews,验证标题|百度新闻,点击|name@@tj_trtieba,验证标题|百度贴吧 +``` + + + +### 3.用例管理: + +还可对用例进行如下管理: +- 用例查询 +- 用例复制:新建用例时可考虑复制一条步骤类似的用例,再修改对应步骤。 +- 用例删除:逻辑删除,可在数据库对应表中恢复。 +- 用例执行:执行单条用例。可查看对应执行记录、截图、或重跑用例。 + + +### 4.用例集管理: + +- 用例集(test suite)对应一个测试范围,可关联多个不同的用例。 +- 执行用例集时会根据设置的并发数进行并发执行,提高测试效率。 +- 用例集中的用例是从测试用例中复制而来,因此每个用例可以在多个不同的测试用例集中关联。 +- 用例集可重跑全部用例、重跑失败用例、重跑单条用例。 注意:重跑用例时,会自动从对应测试用例中加载最新的步骤。 + + +### 5.节点管理: +- 节点:可加载多个selenium grid节点,系统根据当前可用节点的数量,分配用例进行执行。 + +### 6.步骤管理: +- 步骤:现已对大部分常见步骤进行了封装。 +- 扩展封装:可根据需要进行扩展封装。 +- 可直接封装selenium的方法,请参考 刷新、前往、悬浮点击 等方法。 +- 可对selenium提供的方法进行二次封装,请参考 点击、填写、选择等方法。对应扩展代码可在 app/core/extend.py 文件中进行管理。 + + +—————————————————————————————————————————————————————————————————————————————————————— +# atx 部分说明 +## android 用例组织: +样例: +Android|com.your.packagename,点击|id@@com.your.packagename:id/btn_login,等待|2,点击|name@@GuestLogin,等待|5,截图, + +## 已封装步骤: +相关的步骤已封装在 app/core/atx_step.py 中,具体包括: + +Android : 打开指定已安装的app (通过包名) +填写: type_text +点击: click (by id/name/description/class) +截图: take_screenshot + +由于我测试的 app 功能较为简单,目前只封装了这几个方法,如果需要可增加封装对应的方法。 + + + ## 1. 管理平台: 基于flask进行开发,进行用例、用例集、步骤等的增删改查等功能。 @@ -157,91 +308,6 @@ docker run -e NODE_MAX_INSTANCES=10 -e NODE_MAX_SESSION=10 -d --net grid -e HUB_ docker run -e NODE_MAX_INSTANCES=10 -e NODE_MAX_SESSION=10 -d --net grid -e HUB_HOST=selenium-hub selenium/node-chrome ``` -## 使用说明: - -### 1. 新建用例: - -用例步骤说明: -- 每个用例步骤中通过逗号进行分隔。 -- 单个步骤的格式: 步骤名称+分隔符(|)+参数列表(参数间按@@进行分隔)。如:填写|id@@kw@@selenium, 表示步骤为“填写”,参数列表为“id、kw、selenium”。 -- 默认的参数含义:1:通过什么属性定位目标元素(可使用id、name、class、text、xpath、css等多种定位方式进行定位) 2:目标元素对应的属性值(如id = kw) 3:其他。 -- 例如:填写|id@@kw@@selenium: 代表通过 id = kw 查找到输入框,并输入 selenium 。 - -#### 1.1 用例初始化: -初始化可以有以下方式: - -- 指定浏览器类型,如 Chrome、 Firefox。 需要对应的selenium server支持。 -- 指定模拟手机型号, 如 Chrome|iPhone 6。目前只有 chrome 浏览器支持模拟手机。 -- 调用其他已封装的公共方法,如 公共方法|登录。 具体的公共方法格式与正常用例一致,但需要指定用例类型为 公共用例。 -- 公共方法支持嵌套,即一个公共方法里调用另一个公共方法。 - -##### 具体步骤说明请查看菜单:自动化测试-步骤说明。 - -#### 用例说明: -例子:在百度中输入selenium,并验证查询结果是否正确。 -``` -Chrome,前往|http://www.baidu.com,填写|id@@kw@@selenium,点击|id@@su,验证|Web Browser Automation,截图 -``` -步骤解析: -``` -- Chrome: 调用 Chrome driver 进行测试。 -- 前往|http://www.baidu.com : 前往目标页。 -- 填写|id@@kw@@selenium : 在 id 为 kw 的元素中输入 selenium。 -- 点击|id@@su : 点击 id 为 su 的元素。 -- 验证|Web Browser Automation : 验证页面中是否出现 ‘Web Browser Automation’ 的文字。 -- 截图: 对当前页面进行截图并保存。 -``` - -### 2.公共用例 - -某些公共的步骤,可以封装为公共方法进行调用: -- 公共方法添加:新建用例,选择用例类型为 公共用例, 所属模块为public。 -- 公共方法调用:步骤: 公共方法|公共方法名, 如 公共方法|登录;公共方法|查询订单。 - - -### 3.用例管理: - -还可对用例进行如下管理: -- 用例查询 -- 用例复制:新建用例时可考虑复制一条步骤类似的用例,再修改对应步骤。 -- 用例删除:逻辑删除,可在数据库对应表中恢复。 -- 用例执行:执行单条用例。可查看对应执行记录、截图、或重跑用例。 - - -### 4.用例集管理: - -- 用例集(test suite)对应一个测试范围,可关联多个不同的用例。 -- 执行用例集时会根据设置的并发数进行并发执行,提高测试效率。 -- 用例集中的用例是从测试用例中复制而来,因此每个用例可以在多个不同的测试用例集中关联。 -- 用例集可重跑全部用例、重跑失败用例、重跑单条用例。 注意:重跑用例时,会自动从对应测试用例中加载最新的步骤。 - - -### 5.节点管理: -- 节点:可加载多个selenium grid节点,系统根据当前可用节点的数量,分配用例进行执行。 - -### 6.步骤管理: -- 步骤:现已对大部分常见步骤进行了封装。 -- 扩展封装:可根据需要进行扩展封装。 -- 可直接封装selenium的方法,请参考 刷新、前往、悬浮点击 等方法。 -- 可对selenium提供的方法进行二次封装,请参考 点击、填写、选择等方法。对应扩展代码可在 app/core/extend.py 文件中进行管理。 - - -—————————————————————————————————————————————————————————————————————————————————————— -# atx 部分说明 -## android 用例组织: -样例: -Android|com.your.packagename,点击|id@@com.your.packagename:id/btn_login,等待|2,点击|name@@GuestLogin,等待|5,截图, - -## 已封装步骤: -相关的步骤已封装在 app/core/atx_step.py 中,具体包括: - -Android : 打开指定已安装的app (通过包名) -填写: type_text -点击: click (by id/name/description/class) -截图: take_screenshot - -由于我测试的 app 功能较为简单,目前只封装了这几个方法,如果需要可增加封装对应的方法。 - # 常见问题: ### 1:没有可用的节点