«Как получить имя текущего теста?»
Такой вопрос может возникнуть, например, в том случае, когда хочется собрать список всех тестов, отработавших с ошибками, чтобы затем отправить этот список по e-mail’у.
Так как чаще всего запуски тестов организовывают с помощью Test Items, задача сводится к получению имени текущего Test Item’a. Сделать это можно так:
Log.Message(Project.TestItems.Current.Name);
Обратите внимание, что если запустить данный код без использования Test Items, возникнет исключение Object required.
Если же необходимо получить имя именно функции, то в JScript, например, это можно сделать так:
arguments.callee.caller.toString().match(/function\s+([^\s\(]+)/)[1]
Если теперь соединить оба решения, можно написать следующую функцию, которая возвращает либо имя Test Item’a (если это возможно), либо имя функции:
function getCurrentTestName()
{
try
{
return Project.TestItems.Current.Name;
}
catch(e)
{
return arguments.callee.caller.toString().match(/function\s+([^\s\(]+)/)[1];
}
}
Если же вы хотите получить полный Call Stack вызовов функций, то сделать это будет сложнее, да и нет необходимости. В случае попадания в лог ошибки, TestComplete автоматически сгенерирует очередь вызовов, просмотреть которую можно на вкладке Call Stack, предварительно выделив в логе ошибку
