Javascript 使用casper和phantom js进行自动化UI测试的正确方法是什么?

Javascript 使用casper和phantom js进行自动化UI测试的正确方法是什么?,javascript,phantomjs,automated-tests,frontend,casperjs,Javascript,Phantomjs,Automated Tests,Frontend,Casperjs,我有200个手动测试用例,我想为UI测试自动化,为此我选择了Casper framework和Phantom JS 下面是主页的示例测试用例 /** * homepage.js - Homepage tests. */ var test = "abc"; casper.test.begin('homepage', 5, function suite(test) { casper.start("url", function() { test.assertTitle

我有200个手动测试用例,我想为UI测试自动化,为此我选择了Casper framework和Phantom JS

下面是主页的示例测试用例

/**

* homepage.js - Homepage tests.

*/

var test = "abc";

casper.test.begin('homepage', 5, function suite(test) {

   casper.start("url", function() {

        test.assertTitle("Title abc", "title is the one expected");

        test.assertEval(function() {

            return __utils__.findAll("nav.top-fly-out-nav > ul > li > a").length < 8;

        }, "7  navigation link found");

        test.assertExists('form[action="/search"]', "Search form found");

        this.fill('form[action="/search"]', {

            keyword: "clear"

        }, true);

        this.click('#bws-s-search-btn');

        this.waitForSelector('.bws-detail-listing',

            function pass () {

                test.pass("Searh result page loaded}");

            },

            function fail () {

                test.fail("Searh result page not loaded");

            }

        );

    });

    casper.then(function() {

        test.assertTitle("Search", "title is ok");

        test.assertUrlMatch(/keyword=clear/, "search has been submitted");

        test.assertEval(function() {

            return __utils__.findAll(".bws-detail-listing article").length > 0;

        }, "search result found");

    });


    casper.run(function() {

        test.done();

    });

});
/**
*homepage.js-主页测试。
*/
var test=“abc”;
casper.test.begin('homepage',5,功能套件(test){
casper.start(“url”,函数(){
测试资产名称(“名称abc”,“名称为预期名称”);
test.assertEval(函数(){
返回-utils-findAll(“导航顶部飞出-nav>ul>li>a”)。长度<8;
},“找到7个导航链接”);
test.assertExists('form[action=“/search”]”,'search form found');
this.fill('form[action=“/search”]”{
关键词:“清除”
},对);
点击(“#bws-s-search-btn”);
此.waitForSelector(“.bws详细信息列表”,
函数传递(){
test.pass(“Searh result page loaded}”);
},
函数失败(){
测试失败(“Searh结果页未加载”);
}
);
});
casper.then(函数(){
test.assertTitle(“搜索”,“标题正常”);
test.assertUrlMatch(/keyword=clear/,“搜索已提交”);
test.assertEval(函数(){
return _uuutils_uuu.findAll(“.bws详细列表文章”)。长度>0;
},“搜索结果已找到”);
});
casper.run(函数(){
test.done();
});
});
我想问以下问题

1) 编写测试用例的正确方法是什么?例如,当前所有测试值都是硬编码在测试用例中的,如导航计数、标题等。。。如何在Json中保留测试值

2) 如何逐个执行10个不同的模块测试用例,如test1.js test2.js

3) 如何将测试结果记录在文本文件中


4) 这是创建测试模块的正确方法吗?这是正确的体系结构

这里有四个问题,它们加在一起太宽泛了,无法用一个答案来描述。而且,它们都是不同的,彼此不依赖。请为他们中的每一个人单独问一个问题(最后一个问题除外,因为它主要是基于观点的)。不知道,2,3.用,4,,最后,请做@ArtjomB。说。