首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何模块化CasperJS测试步骤?

如何模块化CasperJS测试步骤?
EN

Stack Overflow用户
提问于 2013-09-09 19:31:12
回答 1查看 6.2K关注 0票数 17

我是CasperJS的新手,我已经开始创建一个测试套件。一些步骤(如登录到应用程序)将被大量重用,因此我们希望在库文件(包含在测试文件中)中管理它们。

此外,我们有多个运行环境(开发、集成、生产等)。因此,我们需要对测试步骤进行参数化,这样就可以将参数传递给模块。

我搜索了文档和stackoverflow (我知道还有类似的问题),但我的Javascript技能显然太有限了,我无法启动和运行它。

这是我的示例测试文件:

// googletesting.js
casper.test.begin('Google search retrieves 10 or more results', 5, function suite(test) {
    casper.start("http://www.google.fr/", function() {
        test.assertTitle("Google", "google homepage title is the one expected");
        test.assertExists('form[action="/search"]', "main form is found");
        this.fill('form[action="/search"]', {
            q: "casperjs"
        }, true);
    });

    casper.then(function() {
        test.assertTitle("casperjs - Recherche Google", "google title is ok");
        test.assertUrlMatch(/q=casperjs/, "search term has been submitted");
        test.assertEval(function() {
            return __utils__.findAll("h3.r").length >= 10;
        }, "google search for \"casperjs\" retrieves 10 or more results");
    });

    casper.run(function() {
        test.done();
    });
}); 

它应该是这样的(或类似的):

// googletesting2.js
casper.test.begin('Google search retrieves 10 or more results', 5, function suite(test) {

    doGoogleSearch('casperjs'); // pass a search term
    doChecks();

    casper.run(function() {
        test.done();
    });
}); 
EN

回答 1

Stack Overflow用户

发布于 2013-09-16 16:10:42

只需将相同的代码放入函数即可。有多种方法可以将test传递给函数。最简单的方法是将其作为参数传递。

casper.test.begin('Google search retrieves 10 or more results', 5, function suite(test) {

    doGoogleSearch(test, 'casperjs'); // pass a search term
    doChecks(test);        

    casper.run(function() {
        test.done();
    });
}); 

function doGoogleSearch (test, q) {
    test.assertTitle("Google", "google homepage title is the one expected");
    test.assertExists('form[action="/search"]', "main form is found");
    this.fill('form[action="/search"]', {
        q: q
    }, true);

}

function doChecks (test) {
    test.assertTitle("casperjs - Recherche Google", "google title is ok");
    test.assertUrlMatch(/q=casperjs/, "search term has been submitted");
    test.assertEval(function() {
        return __utils__.findAll("h3.r").length >= 10;
    }, "google search for \"casperjs\" retrieves 10 or more results");
}

同样,如果您将这两个函数放在suite函数的作用域中,这些函数将自动访问test

另一种方法是在suite中将其设置为window.test = test;test将在全球范围内可用。所有函数都可以访问它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18697269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档