Sweetest

Apache License 2.0
Python
Windows
tonglei · 2018年05月25日 · 2177 次阅读 · 16 条评论

小而美的自动化测试解决方案,支持 Web UI 测试,Http 接口测试,DB 操作测试;即将支持 APP 测试...

Sweeetest 文档: https://github.com/tonglei100/sweetest/blob/master/README.md

Github 项目地址:https://github.com/tonglei100/sweetest

QQ交流群:158755338 (验证码:python)

🍎 做开源不易,左上角请随手点个赞呗 💟

sweetest

介绍

Sweetest 是一款同时支持 Web UI, Http 接口, DB 操作的自动化测试框架(即将支持 App测试), 由于开始只支持 Web UI 测试,名字取自 Selenium, Web UI, Excel, Element, Test 含义。
特点:

  1. 简单快速,轻松上手
  2. 无需编码能力
  3. 在 Excel 中以文本编写测试用例
  4. 维护成本低
  5. 支持千、万级别的用例规模
  6. 拥抱变化,支持敏捷

背景

目前,自动化测试基本上是以 Selenium/Appium 等库为接口来编写测试代码,但效果往往不是很好,普遍遇到如下问题:

  1. 用例设计人员的编码能力很弱,测试代码编写和维护成本高,效果差;
  2. 测试代码量大,测试意图不直观,无法支撑千、万级别的用例规模;
  3. 页面元素的定位非常繁琐,且页面结构经常变动,导致用例失效。

为了解决以上问题,使自动化测试更简单、可靠、容易落地,我们设计了此自动化测试框架,自动化测试用例和传统的手工测试用例一样在 Excel 中用文本编写。
同时我们的元素定位也设计的非常精巧,结合“变量定位法”,可以让页面自由的去变化,而我们的定位只做最小适用。

实现思路

  1. Selenium 为底层接口;
  2. 在 Excel 中用文本编写测试用例;
  3. 元素定位表格化,且优先使用“变量定位法”;
  4. 框架负责解析测试用例,执行用例,记录日志,输出测试结果。

方案

  1. 开发语言:Python
  2. 底层接口:Selenium
  3. 用例工具:Excel

测试用例如下图:
testcase

安装

环境要求

  • 系统要求:Windows
  • Python 版本:3.6+
  • 浏览器:Chrome
  • Chrome 驱动: chromedriver (需和 Chrome 版本匹配,并配置环境变量,参考这里配置)

安装 sweetest

pip install sweetest

升级 sweetest

pip install --upgrade sweetest

快速体验

打开 cmd 命令窗口,切换到某个目录,如:D:\Autotest

sweetest
cd sweetest_example
python start.py

install

OK,如果一切顺利的话,sweetest 已经跑起来了

更多介绍请参考:https://github.com/tonglei100/sweetest

QQ交流群:158755338 (验证码:python)

评论列表
longv612 发表于 2018年05月31日

感谢分享,好东西,学习一下。是不是也可以尝试着向app端发展一下。

tonglei 发表于 2018年06月01日

@longv612 这个正在准备中,其实现在已经支持 App 的点击和输入操作了

zailushang 发表于 2018年06月05日

楼主,这套框架目前使用效果怎么样?稳定性怎么样?

tonglei 发表于 2018年06月06日

@zailushang 目前,我们已经在包括门户,互联网金融,后台管理等类型的网站上成功开展了 Web 自动化测试,门户这种简单的网站一人周可以写200个左右用例,互联网金融2人周可以写50个左右,后台管理由于页面比较复杂,前期可能2人周写5个左右。我说的是从0接触这个框架开始,如果是已经熟练使用的话,还会快很多。
现在可以说在 Web UI 测试上是非常稳定的,踩过了坑也很丰富,最近已经没有需要新增的特性,也没有发现框架有bug了。
祝你使用愉快~

airsen 发表于 2018年06月06日

楼主,你这是基于框架还是基于页面平台也有?

tonglei 发表于 2018年06月06日

@airsen 底层基于 Selenium, requests, Appium 还有一些数据库的 python 客户端

zailushang 发表于 2018年06月06日

最近我也在做Web UI自动化,遇到一些比较不常见的问题,比如 xpath、css定位元素,稳定性不够,有时候会定位不到元素,不知道您这边怎么从开发角度做到的?保证UI自动化的稳定性

zailushang 发表于 2018年06月06日

需要判断的用例,也可以满足吗?
比如判断当前是否为登录状态,如果不是,进行登录操作。
如果是,继续下面的操作

tonglei 发表于 2018年06月06日

@zailushang 元素采用 Explicit Waits 来定位,我还是比较推荐使用 xpath 来定位,因为 xpath 可以设计的更灵活一些,适用性更强。有的页面采用了 frame,这个也是需要切换后才可以定位到。对于一些加载比较慢的步骤,还可以明确的指定等待时间。
但无论如何,当页面变化很大时,还是需要更新一下元素定位表,框架里元素定位时单独写在一个 Excel 里的,可以复用,最大程度的减少工作量。

tonglei 发表于 2018年06月06日

@zailushang 支持啊, 框架支持 if then else 循环(循环次数、跳出条件,嵌套循环)等语法 :)

zailushang 发表于 2018年06月06日

我目前的疑问主要有:
1、其实我的脚本中也加入了显示等待,但是有时候不知道什么原因,就是定位不到。(上一个用例定位到了,下一个用例定位不到)
2、有时候元素定位到了,但是功能使用却有问题,详见我之前的提问:https://testerhome.com/topics/14501
目前主要是这两个疑问,不知道是不是因为我使用的selenide里面有一些未知的坑导致的

tonglei 发表于 2018年06月06日
  1. 很多前端很坑的,比如用 js 页面元素属性做了处理,那么 Selenium 操作就会无效。比如在输入框输入了文本,但是如果不在空白地方点一下,点相关的按钮就失效
  2. 或者有些元素是动态加载的,只有点击了某个元素才会出现
  3. 页面被刷新,那么再刷新前使用 Selenium 已定位的元素就找不到了
zhangwk02 发表于 2018年06月06日

必须赞一个,开源工具

helloTest123 发表于 2018年06月20日

支持下

gaomengsuijia 发表于 2018年06月22日

为啥我在源码上没有看到 find_element_by_xpath这些定位元素的代码?

jj-bug 发表于 2018年06月22日

sweetest生成sweetest_example时没有sweetest_example.zip什么鬼