2013-07-30 55 views
1

我使用casperjs運行自動化接口,測試和我生成最終的xUnit酷似XML輸出文件。我想知道是否有任何方法來覆蓋或手動設置測試類名?舉例來說,在我的輸出文件我有:casperjs:在輸出的xUnit XML文件改變測試`classname`

<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> 

我搜索的文件,卻發現什麼都沒有......

回答

0

如果這是您想要的確切結果,請將您的文件名更改爲xxx.js,並且您的結果將爲classnname ='xxx'。

+0

謝謝你,但是......這不是我所期待的;) – ducin

2

可以更改casper.test對象的currentTestFile財產。您可以爲完整文件或單個測試塊執行此操作。

爲完整的測試文件,你可以在開頭添加以下行:

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> 

這樣的測試包package和測試用例classnamenewFileName

如果你想只改變測試用例,那麼你需要覆蓋的文件名是這樣的:

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

注意:這是內部屬性不在文檔中。將來它可能會改變行爲或將其全部刪除。

+0

黑客攻擊的一位,但它的工程! :) –

+0

你說得對。我添加了必要的評論。 –