Sweetest

MPL
Python
Windows
tonglei · 2018年05月25日 · 6011 次阅读 · 39 条评论

小而美的自动化测试解决方案,支持 Web UI 测试,Http 接口测试,DB 操作测试,Android App 测试,小程序测试

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

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

🔥 iOS 测试支持目前处于开发阶段,详细情况请加 QQ 群 🔥

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

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

sweetest

介绍

Sweetest 是一款同时支持 Web UI, Http 接口, DB 操作,Android 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什么鬼

tonglei 发表于 2018年06月25日

@gaomengsuijia 用了getattr

tonglei 发表于 2018年06月25日

@jj-bug Mac 和 Linux 可能会有这种情况

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

是mac怎么解决?大神

nigu 发表于 2018年06月25日

有考虑加入分布式么

tonglei 发表于 2018年06月26日

@nigu 有计划做一个自动化测试平台的网站,以便统一维护用例,多任务执行,失败用例重跑,在线查看测试报告等。其中多任务会使用 selenium grid 来做分布式执行,Appium 本身就是支持远程调用的。

Ki 发表于 2018年07月02日

ubuntu上,能用吗?

tonglei 发表于 2018年07月02日

@ubunhu 应该是可以的,但是 sweetest 命令可能无法使用,需要自己下载 sweetest_example.zip

fionawei 发表于 2018年07月09日

开源工具还是需要手动支持下的

xuwangcheng14 发表于 2018年08月02日

目前准备使用你的框架,但是感觉用excel管理还是太麻烦,另外报告也不太好管理,所以请问作者什么时候能够用上数据库,能够使用页面配置管理测试内容

tonglei 发表于 2018年08月03日

@xuwangcheng14
根据我多年的经验,Excel 在编写/维护用例上可能是最好用的工具,比一些网页更简单快捷;但做测试计划,失败重跑,历史记录方面确实有不足。
目前我们是使用 TFS(类似于jenkins) 来做持续集成的,Excel 用例是 git 管理,执行直接在 TFS 上配置定时任务,在测试完成后,junit 格式的测试结果自动上传到TFS,TFS 再展示结果。

目前,重心还是在完善 App 测试支持,然后才会考虑做用例管理平台。

sungj521 发表于 2018年08月03日

期待网页版的,大赞

zoulong1989 发表于 2018年08月03日

小程序执行效率如何,robot那时相当慢

tonglei 发表于 2018年08月06日

@zoulong1989 目前仅支持 Android,在 OPPO R9s 上跑小程序很快的,和正常手速差不多吧

pjl 发表于 2018年08月09日

请问一下大神ANDROID和IOS的 APP自动化的现在实现了吗?

tonglei 发表于 2018年08月10日

@pjl 底层用的是 Appium,在 Android 上测试是支持的,iOS 太卡,暂时可以认为不支持

anson 发表于 2018年08月10日

@tonglei 你们一周能写这么多case 200个 ? 厉害 那有把修复环境 过期脚本 这些计算在内么 这个是怎么做到的 我们一年估计也就200个

tonglei 发表于 2018年08月10日

@anson 对于门户类简单的网站确实是可以的,前提是有人指导或者已经熟练使用 Sweetest

siwen 发表于 2018年08月10日

挺不错的

Dawson 发表于 2018年08月11日

好东西

xiaoxiao55 发表于 2018年08月12日

是只支持windows吗?Mac 上面创建文件失败呢。
Traceback (most recent call last):
File "/usr/local/bin/sweetest", line 11, in
load_entry_point('sweetest==0.8.8.3', 'console_scripts', 'sweetest')()
File "/usr/local/lib/python3.6/site-packages/sweetest/init.py", line 17, in sweetest
extract(os.path.join(example_dir, 'sweetest_example.zip'), current_dir)
File "/usr/local/lib/python3.6/site-packages/sweetest/init.py", line 8, in extract
f = zipfile.ZipFile(zfile, 'r')
File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/zipfile.py", line 1090, in init
self.fp = io.open(file, filemode)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.6/site-packages/sweetest/example/sweetest_example.zip'

tonglei 发表于 2018年08月13日

@xiaoxiao55 翻下上面的评论,或者看下问题汇总都有说明