`
webdev2014
  • 浏览: 678558 次
文章分类
社区版块
存档分类
最新评论

《Sencha应用程序的UI测试 》一文的示例分析

 
阅读更多


在昨天翻译了一篇文章《Sencha应用程序的UI测试》,里面有个示例应用程序,但是没详细说明是怎么写出来,本文将针对该示例做一个说明。


首先来看看QA测试的启动页面index.html(ui-tests\app目录下):

<!DOCTYPE html>
<html>
<head>
    <!-- Ext JS -->
    <link rel="stylesheet" type="text/css" href="http://cdn.sencha.io/ext-4.1.0-gpl/resources/css/ext-all.css">
    <script type="text/javascript" src="../../resources/extjs-4.1.0/ext-all-debug.js"></script>

    <!-- Siesta -->
    <link rel="stylesheet" type="text/css" href="../../resources/siesta-1.1.5-lite/resources/css/siesta-all.css">
    <script type="text/javascript" src="../../resources/siesta-1.1.5-lite/siesta-all.js"></script>

    <!-- The test harness -->
    <script type="text/javascript" src="index.js"></script>
</head>
<body>
</body>
</html>

代码包含了Ext JS和Siesta的引用,真正的执行文件应该是index.js,代码如下:

var Harness = Siesta.Harness.Browser;

Harness.configure({
    title     : 'Sencha UI Test Demo - Application Tests',
    
    hostPageUrl: '../../index.html',

    preload : [
        '../../resources/sinon-1.5.2.js',
        'api_stub.js'
    ]
});


Harness.start(
    {
        group       : 'Basic application layout',
        
        items       : [
            {
                title : 'Test tabs for data in grids',
                url : 'tests/01_tabs.js'
            },
            {
                title : 'Test double-click functionality',
                url : 'tests/02_RsvpWindow.js'
            }
        ]
    }
);

代码首先将Harness指向Siesta.Harness.Browser,方便代码编写。接着是为起做一个配置(configure)。

在配置里,title应该是标题了。接着是hostPageUrl,根据地址可以知道是应用程序的启动页面。preload是要预加载的文件,这里要加载的是sinon,这东西是用来组织数据的,api_stub.js就是用这个来生成返回数据的。

接着是执行start方法,开始运行测试,测试里设置了2项,一项是调用01_tabs.js,一项是调用02_rsvpWindo.js,显示在页面中也就是文中配图的左边两项。

下面来看看02_rsvpWindo.js这个文件,比较典型,代码如下:

StartTest(function(t) {

    var tabPanel, upcomingEvents, pastEvents;

    t.chain(
        { waitFor : 500 }, //Allow time for the application to render
                           // also try to give the Meetup.com API time to return... see note below

        function(next) {
            //set references after rendering
            tabPanel =  Ext.ComponentQuery.query('tabpanel')[0];
            upcomingEvents = tabPanel.items.getAt(0);
            pastEvents = tabPanel.items.getAt(1);

            next();
        },

        function(next) {
            t.diag('Test that the upcoming event grid displays an RSVP popup when a row is double-clicked.');

            t.doubleClick(upcomingEvents.el.down('.x-grid-row').dom, function() {
                var win = Ext.ComponentQuery.query('rsvpwindow')[0];

                t.is(win.isHidden(), false, 'RsvpWindow should be visible.');
                win.close();

                next();
            });
        },

        function(next) {
            t.diag('Switch tabs');

            //click on the past events tab
            t.click(tabPanel.el.query('.x-tab')[1], next);
        },

        { waitFor : 500 }, //allow animation to complete

        function(next) {
            t.diag('Test that the past event grid displays an RSVP popup when a row is double-clicked.');

            t.doubleClick(pastEvents.el.down('.x-grid-row').dom, function() {
                var win = Ext.ComponentQuery.query('rsvpwindow')[0];

                t.is(win.isHidden(), false, 'RsvpWindow should be visible.');
                win.close();

                next();
            });
        }
    );

});

看了两个文件,格式是固定的,都是以"StartTest(function(t) {"开始,然后t.chain中以JSON格式编写测试函数。

第一个函数,先获取要测试的组件。

第二个函数中的doubleClick表明是用来测试Grid的行的双击操作。这里的关键就是第一个参数要找出实际要测试的HTML元素。如果弹出窗口显示正确,close就能执行正确。

第三个函数是测试标签页切换了。关键还是要掌握怎么找到元素。

第4个函数还是用来测试Grid的行的双击操作。


总的来说,这样写测试代码也不会太困难,关键的地方是掌握Siesta的一些方法以及能正确获取到要测试的组件的元素。

分享到:
评论

相关推荐

    sencha touch应用程序

    sencha touch应用程序,需要在web服务器上才能看见结果。sencha touch的创建可以见我的博客。

    SenchaTouch权威指南示例代码

    SenchaTouch权威指南的代码示例,在本机亲自测试通过,是学习的好材料

    Sencha 和 Sencha Touch 简介

    本文通过对 Sencha Touch 框架的介绍,使读者对该框架有一定的了解,并通过一些代码示例给用户更详细直观的对 Sencha Touch 框架功能的了解。 ExtJS ExtJS 是为 web 开发人员提供的基于 JavaScript 和 web 标准快速...

    Sencha Arhitecture建立Web应用程序步骤

    Sencha Arhitecture建立Web应用程序步骤

    webapp界面UI框架Sencha Touch 是WEB APP的界面UI组件库,明显比jquery Mobile快.zip

    webapp界面UI框架Sencha Touch 是WEB APP的界面UI组件库,明显比jquery Mobile快.zip

    一个完整的sencha touch 应用案例

    sencha touch 应用案例 sencha touch 案例 一个完整的sencha touch 应用案例 移动WEB社区开发的日志案例 非常不错!

    SenchaCmd-5.1.0.26-windows

    Sencha cmd 是一个跨平台的命令行工具,它从你应用程序的新创建到部署入产品中的整个生命周期都提供了许多自动化的执行任务。 Sencha Cmd 提供了一系列功能强大的节约时间的功能,结合Sencha Ext JS 和Sencha Touch...

    SenchaCmd6.6安装程序

    SenchaCmd6.6安装程序,安装后直接需要配置环境变量,在path中添加SenchaCmd路径即可

    vs2010+android+senchatouch手机压力测试方法

    android+senchatouch手机压力测试方法

    Sencha Cmd 6.0

    Sencha Cmd是你创建Sencha应用程序的好帮手,从一个新项目的脚手架到应用程序的生产环境的部署。Sencha Cmd可以完整管理你整个项目周期。凭借丰富的命令行语法和Ant集成,Sencha Cmd可以将应用程序完善地融入你的...

    Sencha_Touch_2_MVC_总纲(应用程序简介)

    Sencha Touch 应用程序是一个由 Model、View、Controller、Store、Profile 组成的集合,外加一些额外指定的元数据,比如 icon 图标和启动界面显示的图片

    simpleoauth:Sencha 5 应用程序来测试 oauth2

    如果您已经在数据库中有一个客户端... 虽然您可以删除此应用程序不使用的一些文件和文件夹,但在决定可以删除哪些内容以及哪些内容需要保留在源代码管理中之前,请务必阅读以下内容。 构建和加载应用程序都需要以下

    SenchaCmd-3.1.0.192-windows.exe

    sencha app build 命令制定去哪里找到你的应用程序的代码全部依赖于app.classpath配置,它是在”.sencha/app/sencha.cfg“文件夹下的。默认的数值是 app.classpath=${app.dir}/app,${app.dir}/app.js 更高层次的阅读...

    推荐3款强于Sencha Touch和jQuery mobile的webapp前端UI库.zip_lycamobile

    推荐3款强于Sencha Touch和jQuery mobile的webapp前端UI库.zip

    SenchaArchitect-2.0.0.000442

    开发好应用后,开发者就可以通过Sencha Architect 2打包应用以部署到Web上或是发布到原生的应用商店中。 Sencha Architect 2的主要特性如下所示: 通过拖拽组件来创建富用户界面并连接到后端的数据源。 支持通过...

    extjs-sample:示例 ExtJS 应用程序

    这个应用程序由以下文件和目录组成: index.html - 用于显示应用程序的主要 html 文件 app.js - 主要的 ExtJS 应用程序文件 app 文件夹,其中包含应用程序所需的所有文件 控制器 - 包含应用程序的控制器 模型 - ...

    sencha-touch2-jasmine:使用Jasmine的sencha touch2示例项目

    使用Jasmine进行BDD测试的Sencha Touch 2应用程序 概述 这是一个将Jasmine添加到Sencha Touch 2项目中的实验项目。 不幸的是,Sencha Touch 2似乎尚未集成任何测试框架,因此我试图在不对任何框架(Sensa Touch2和...

    SenchaMinify:Sencha 应用程序缩小库

    该库允许您使用 ASP.NET MVC 引擎即时缩小 ExtJS 和 Sencha Touch 文件。 用法 ####Global.asax protected void Application_Start () { // ... BundleConfig . RegisterBundles ( BundleTable . Bundles ); } ...

    sencha.js sencha.css

    sencha.js sencha.csssencha.js sencha.csssencha.js sencha.css

Global site tag (gtag.js) - Google Analytics