`
LiZn
  • 浏览: 10274 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

WEB前端的自动化测试-Yeti篇

阅读更多

写一些单元测试来保证代码的质量和可维护性是码农必须要做的事,通常来说,写一点代码,写一点测试是一种很好的实践,然而身为前端码农,写出的代码可能需要运行在很多环境当中。如果我们写一点代码,然后就在IE6789,Chrome,Firefox,Safari,可能还有山寨浏览器abcd中人肉测试的话,实在是太崩溃了。幸好,大神们除了给我们提供了QUnit,YUITest,Jasmine等等单元测试框架之外,还提供了一些自动化测试工具,比如jsTestDriverSeleniumSelenium Grid 2),以及本篇要介绍的Yeti,让我们能够更高效的写“有质保”的代码。

这3种自动化测试工具中,专注于提供本地自动化测试的就是来自YUI团队的Yeti了,它能够支持Qunit、YUITest、Jasmine、Mocha写成的单元测试,通过命令行可以方便的搭建Hub服务,并且能集成到WebStorm等IDE环境中,一键测试所有环境;来自google的jsTestDriver是全能型的,既适合在本地环境快速测试,又能够集成到CI中,执行代码提交后的自动化测试,也有QUnit的Adapter(这是能支持较新QUnitAPI的分支版本,jsTestDriver官方Wiki中的Adapter太旧了)来支持Qunit API写成的测试,但我始终觉得jsTestDriver少了点什么,没有选用……;ThoughtWorks的Selenium是一款Web自动化测试框架,提供了API来支持自动化的界面测试,做测试的同学应该比较熟悉。YUI团队提供了YUITest Selenium Driver,能够让Selenium运行YUITest的单元测试。Selenium运行需要每次驱动浏览器打开和关闭,不太适合本地环境快速的反馈循环。在《WEB前端的自动化测试-Selenium篇》会介绍如何在Selenium Grid 2中运行YUITest。

安装

Yeti是NodeJS的一个模块,能够使用npm很方便的安装。

$ npm install -g yeti

这样就可以在命令行直接使用yeti命令来执行测试了。

快速开始

$ yeti test/*.html

该命令会在创建一个一次性的Hub服务 http://localhost:9000/ ,打开需要测试的浏览器连接到该服务,在命令行回车后,就会开始在各个浏览器中测试相对路径test/*.html指定的单元测试页面。
一般在开发中,不会这样使用Yeti,每次创建服务太浪费时间。

创建Hub服务

$ yeti --server

会创建一个默认端口是9000的Hub服务 http://localhost:9000/,也可以用--port参数来指定端口。该命令会占用一个命令行终端,运行测试需要打开新的命令行终端。可以用这个Hub服务来捕获需要测试的浏览器,如果本地LAN有WIFI,那么移动终端的浏览器也可以很方便的测试,如果没有WIFI,可以参考结合localtunnel使用,方便移动终端测试

$ yeti --hub http://localhost:9000/ test/*.html

在另外的命令行中执行该命令,就可以在已连接的浏览器中测试了。--hub参数指定Hub服务的地址。
虽然一行命令就可以自动运行测试了,但是能够一行命令都不输入就更快了吧。

集成Yeti到WebStorm

WebStorm是非常好用的前端IDE,jetbrains的其他IDE应该也都是神器,就是卖的比较贵,本屌丝只能先用着google到的分享帐号

在WebStorm的扩展工具面板中,点选添加

在WebStorm的扩展工具面板中,点选添加


在WebStrom的设置中可以添加扩展工具,File>Settings>External Tools面板中,点选黄色的+号。

 

 

Yeti设置

Yeti设置

主要需要设置Program, Parameters, Working derectory三项:Program是选择命令行运行的程序,因为Yeti是NodeJS模块,所以是需要你机器中node.exe的路径;Parameters就是node的参数,这里需要找到Yeti的安装目录,具体怎么找请google一下吧。Yeti的可执行文件后面需要跟上Yeti的参数,–hub指定Hub服务地址,后面则是需要测试的页面路径,图中的设置是WebStorm提供的路径参数(这些参数可以点击Insert macro按钮后选择),$FileRelativePath$指当前鼠标选中的文件相对Project目录的路径;Working directory是当前命令工作的目录,这里把它指向Project根目录了。这里的路径可能需要注意下,如果测试页面中有相对路径的js或其他资源,命令中的测试页面路径的顶层目录需要把这些资源包含进去,否则在测试时就会产生404。这里的表述不太清楚,懒得再截图了=。=!

设置完毕后,就可以选中项目中的测试页面,右键菜单中可以找到刚配置过的yeti,点击yeti选项就可以执行该页面的测试了。同样的,也可以再配置一份命令来运行整个项目的单元测试。

右键菜单执行测试

右键菜单执行测试

当然,也可以给yeti扩展设置快捷键,同样是Settings>Keymap面板,找到External tools下的yeti,双击并选择Add Keyboard Shortcut,就可以按组合键设置了。

给yeti设置快捷键

给yeti设置快捷键

测试后会返回结果,如果有测试没有通过,会打印未通过的测试信息。但是貌似只对YUITest有良好支持,使用QUnit测试,只有偶尔能得到未通过的测试信息-。-

测试成功的命令行返回

测试成功的命令行返回

测试失败的命令行返回

测试失败的命令行返回

yeti还有些其他参数如--timeout--query,以及config文件和输出Junit格式的报告等功能,具体可以参考Yeti主页或Github上的文档

欢迎留言讨论。

本博客文章由LiZn创作或分享,以创作公用CC 姓名标示-非商业性-相同方式分享 3.0 Unported 授权条款共享。 
转载请注明 转自: WEB前端的自动化测试-Yeti篇 http://www.lizn.net/automated-testing-with-yeti/
希望本文能够对你有所帮助,欢迎留言讨论,如果你喜欢本站文章,可以使用该 RSS订阅地址来订阅本站。

0
0
分享到:
评论

相关推荐

    generator-jekyll-yeti:一个 Yeoman 生成器,用于在 Jekyll 中使用 Zurb Foundation 5 的强大功能创建快速的博客感知静态站点

    Jekyll & Yeti 使用模块化的 Foundation 组件,允许您删除不必要的 css 和 js 以加快页面加载速度。 剩下的 sccs 被编译,css 和 js 被压缩并连接到最终的 Grunt 构建中。 Scss: 所有 Foundation Scss 组件都在主 ...

    ember-yeti-table:雪人桌

    安装ember install ember-yeti-table为什么选择雪人桌? 与其他表解决方案相比,最大的区别可能是Yeti Table使用模板定义列。 在许多其他表格解决方案中,您需要在javascript中定义列。 Yeti Table源自尝试在模板中...

    hubot-yeti:雪人所有的东西

    胡博雪人Hubot 的所有雪人有关...安装在hubot项目仓库中,运行: npm install hubot-yeti --save 然后将hubot-yeti添加到您的external-scripts.json : [ " hubot-yeti " ]示例交互 user1>> hubot hellohubot>> hello!

    Yeti-v1.3.14_Maya2013-2014-2015-win64

    6. **工作流程**:Yeti与Maya的集成非常紧密,允许用户在Maya的现有工作流中无缝切换,同时提供脚本和API接口,便于进行自定义扩展和自动化工作流程。 总结来说,Yeti v1.3.14作为一款专业的毛发插件,为Maya用户...

    JavaScript测试运行器Yeti.zip

    Yeti 是一个浏览器上的 JavaScript 测试运行器,基于 Node.js。你可以使用 Yeti 来测试 YUI 每个部件。 安装和使用: $ npm install -g yeti $ yeti test/*.html Connected to http://localhost:9000 Agent ...

    WordPress主题雪人Yeti1.9.2

    《WordPress主题雪人Yeti1.9.2详解》 WordPress作为全球最受欢迎的开源内容管理系统,拥有丰富的主题库,其中“雪人Yeti”是一款备受用户喜爱的主题之一。本文将详细解析Yeti 1.9.2版本,帮助你更好地理解和运用这...

    Maya毛发插件Yeti 1.2.16版,Peregrine Labs Yeti v1.2.16 For Maya 2012-2014 Win64

    Maya毛发插件Yeti 1.2.16版,Peregrine Labs Yeti v1.2.16 For Maya 2012-2014 Win64

    java采购管理系统源码-Yeti:Java的OpenGL的发动机进/延迟渲染,实时阴影,和SSAO。作为OpenGLmitJava在奥尔登堡

    java采购管理系统源码Yeti Java OpenGL 引擎 概括 该引擎是我的个人项目,因此不建议将其用于严肃的项目(例如严肃的游戏开发工作)。 我试着把它记录得体面,所以人们可能会从中学到一些东西。 或者至少了解将来要...

    doc:Yeti-switch文档

    在Yeti-switch文档中,可能会涵盖如何利用这些新特性,结合Yeti-switch实现更丰富的用户体验。 响应式设计是现代网页开发的重要组成部分,确保网页在不同设备上都能良好显示。Yeti-switch可能提供了一种便捷的方式...

    yeti-engineering:个人网站。 React 前端,Node 后端

    标题中的"yeti-engineering"是一个个人网站项目,它采用了现代Web开发的主流技术栈——MERN,即MongoDB、Express、React和Node.js。这个技术组合为构建动态、交互式的Web应用程序提供了全面的解决方案。 1. **...

    云计算的计算机软件测试技术分析.pdf

    未来的发展方向可能包括自动化测试、持续集成、以及容器化和微服务架构的集成测试。自动化测试能够减少人工干预,提高测试效率;持续集成则是将测试过程与开发过程紧密集成,实现快速反馈;而容器化和微服务架构的...

    yeti-maven-template-project

    Yeti-Maven-Template-Project yeti-maven-plugin的模板项目只是git克隆它。 使用mvn:compile尝试一下。 在目标/类中,现在应该有一个Foo.class和org / foo / foom.class。 调整pom.xml以包括您的group / artifactId...

    yeti:YETI - 使用 Eclipse 进行 TinyOS 开发

    "yeti-master" 很可能表示这是一个 YETI 的源码仓库,其中包含主分支的全部代码,可能是从 Git 版本控制系统导出的。"master" 通常代表项目的主分支,意味着这是最新、最稳定的版本。 **综合知识点:** 1. **Tiny...

    标签雪人「Tag Yeti」-crx插件

    Tag Yeti是一个扩展,可帮助您可视化最常用的Evernote标签。只需用贴纸标记一个网站,Tag Yeti就会为你保留。所以你可以找回重要的东西。 1.为不同的主题创建贴纸。 2.浏览时用贴纸组织网页。 3.您的贴纸与您的印象...

    yeti1.5wordpress主题

    "Yeti 1.5 WordPress 主题"是一款专为WordPress平台设计的强大且具有娱乐性质的网站主题,尤其适合那些希望创建幽默、轻松内容的站点,如糗事百科类的社区。这款主题以其长久的稳定性、良好的SEO优化以及官方定期...

    bootswatch_yeti-theme:已弃用 - PyroCMS v3 的 Bootswatch Yeti 主题

    bootswatch_yeti-主题PyroCMS v3 的 Bootswatch Yeti 主题v1.0.0-dev通过下载安装: 1:如果尚未创建:创建要安装插件的目录。 2:复制到: /addons/shared/enlivenapp/ -或- /addons/[SITE_REF]/enlivenapp/ full ...

    nodejs测试包

    Karma可以与Mocha、Jasmine等测试框架结合使用,提供了一个强大的自动化测试解决方案。 6. **npm**:npm(Node Package Manager)是Node.js的包管理器,它允许开发者方便地安装、共享和管理依赖项。在这个压缩包中...

    yetiscript:Yeti 到 javascript 编译器

    更新版本 0.2.1 26-11-2014 Chrome 扩展使用 compileserver 中的构建作为单独的项目 26-11-2014 修复了节点不理解的 npm 模块日志 jar 中的错误25-11-2014 添加了 webserver 以使用编译器/repl 作为本地 rest-api ...

    云计算在软件测试中的应用.pdf

    2. 按测试任务分类:例如压力测试、兼容性测试、自动化测试等,针对不同测试目标采取不同的策略。 四、基于云计算的计算机软件测试架构 云计算环境下的软件测试架构主要包括以下几个方面: 1. 云测试平台:如...

    bootswatch-dist:bootswatch主题的分发包

    例如3.3.0版本的雪人主题的发布与3.3.0-yeti分支版本标识符yeti 。 因此,在通过Bower安装主题时,可以同时使用标记和分支名称。 使用bootswatch-dist,可以通过Bower轻松安装Bootswatch主题。从航站楼对于确切的...

Global site tag (gtag.js) - Google Analytics