casperjs: изменить test `classname` в выходном XML-файле XUnit

Я использую 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>

Я искал документацию, но ничего не нашел...


person ducin    schedule 30.07.2013    source источник


Ответы (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>

Таким образом, набор тестов 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();
    });
});

Вы должны иметь в виду, чтобы изменить его обратно, если вы не хотите, чтобы это новое имя файла было установлено для следующих наборов тестов и тестовых случаев.

См. этот суть для полного примера.

Примечание. Это внутреннее свойство, которого нет в документации. В будущем он может изменить поведение или быть удален полностью.

person Artjom B.    schedule 01.07.2014

Если это именно тот результат, который вам нужен, измените имя файла на xxx.js, и ваш результат будет classnname='xxx'.

person Manish Sivanandan    schedule 25.08.2013
comment
Спасибо, но... не этого я ожидал ;) - person ducin; 25.08.2013