casperjs:在输出XUnit XML文件中更改测试`classname`

时间:2013-07-30 11:20:06

标签: javascript testing casperjs

我正在使用casperjs来运行自动化接口测试,最后我生成了类似XUnit的XML输出文件。我想知道是否有任何方法可以覆盖或手动设置测试类名?例如,在我的输出文件中我得到了:

<testcase name="Found an element matching: .headerProfile" classname="test/casperjs/casper-test" time="0.002"></testcase>
<testcase name="Found an element matching: .headerCalendarTab" classname="test/casperjs/casper-test" time="0.003"></testcase>
<testcase name="Found an element matching: .headerMetricTab" classname="test/casperjs/casper-test" time="0.002"></testcase>

我想:

<testcase name="Found an element matching: .headerProfile" classname="xxx" time="0.002"></testcase>
<testcase name="Found an element matching: .headerCalendarTab" classname="xxx" time="0.003"></testcase>
<testcase name="Found an element matching: .headerMetricTab" classname="xxx" time="0.002"></testcase>

我搜索了文档,但一无所获......

2 个答案:

答案 0 :(得分:2)

您可以更改currentTestFile对象的casper.test属性。您可以为完整文件甚至单个测试块执行此操作。

对于完整的测试文件,您可以在开头添加以下行:

casper.test.currentTestFile = "newFileName.js";

这将导致

<testsuite name="test1" tests="1" failures="0" errors="0" time="0.063" timestamp="2014-07-01T15:37:26.546Z" package="newFileName">
    <testcase name="was true" classname="newFileName" time="0.063"></testcase>
    <system-out></system-out>
</testsuite>

这样,testsuite package和测试用例classname将为newFileName

如果您只想更改测试用例,则需要以这种方式覆盖文件名:

casper.test.begin("test2", function suite(test){
    var oldfile = test.currentTestFile;
    test.currentTestFile = "newFile.js";
    casper.start().then(function(){
        test.assert(true, "was also true");
    }).run(function(){
        test.currentTestFile = oldfile;
        test.done();
    });
});

如果您不希望为以下测试套件和测试用例设置此新文件名,则需要记住要将其更改回来。

请参阅此gist for a complete example

注意:这是内部属性,不在文档中。将来它可能会改变行为或全部删除。

答案 1 :(得分:0)

如果这是您想要的确切结果,请将文件名更改为xxx.js,结果将为classnname ='xxx'。