параметры функций по умолчанию
#1
Отправлено 03 января 2012 - 16:38
1. Каким образом при вызове функции оставлять часть дефалтовых параметров нетронутыми, а другую изменять? Например, мы имеем метод:
Log.Error(MessageText, AdditionalInformation, Priority, Attr, Picture, FolderID)
Первый его параметр является обязательным, остальные - опциональные. Из них мне нужно передать параметр Picture, а остальные опциональные параметры оставить без изменений. Первое, что пришло в голову:
Log.Error("Some text", null, null, null, myPicture)
Такой вариант у меня не заработал.
Есть ли решение данной проблемы, или для этого нужно задать параметры перед Picture?
2. Можно ли создавать свои функции с параметрами по умолчанию, и каким образом это можно сделать?
Заранее спасибо за ответы.
#2
Отправлено 03 января 2012 - 18:44
Просто не пишите параметры. Т. Е будет ,,Здравствуйте!
1. Каким образом при вызове функции оставлять часть дефалтовых параметров нетронутыми, а другую изменять? Например, мы имеем метод:
Log.Error(MessageText, AdditionalInformation, Priority, Attr, Picture, FolderID)
Первый его параметр является обязательным, остальные - опциональные. Из них мне нужно передать параметр Picture, а остальные опциональные параметры оставить без изменений. Первое, что пришло в голову:
Log.Error("Some text", null, null, null, myPicture)
Такой вариант у меня не заработал.
Есть ли решение данной проблемы, или для этого нужно задать параметры перед Picture?
2. Можно ли создавать свои функции с параметрами по умолчанию, и каким образом это можно сделать?
Заранее спасибо за ответы.
#3
Отправлено 03 января 2012 - 20:57
Просто не пишите параметры. Т. Е будет ,,
Нет, это не так. Так написано в справке, но это ошибка.
На эту тему даже был вопрос в саппорте и я просил зарегистрировать это как новую фичу
http://smartbear.com...c8-828f0ceb2807
Вы можете зарегистрироваться на их форуме и отписаться в той теме, что тоже хотели бы видеть эту функциональность, тогда, возможно, она будет быстрее добавлена :)
Отвечая на вопрос: в общем случае вам придется передавать нужные значения всех параметров, которые предшествуют параметру Picture.
Однако конкретно ваша ситуация (помещать в лог скриншот в случае ошибки) решается проще: в нактройках проекта (правый клик по имени проекта, Edit - Properties - Playback) включите опцию Post image on error (она там внизу под кучей других опций).
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#4
Отправлено 03 января 2012 - 21:11
Например, в джаваскрипте это будет выглядеть так
function testArgs(one, two) { if(one == null || one == undefined) { Log.Message("Parameter 'one' is NULL or undefined, setting it to <empty>"); one = "<empty>"; } Log.Message(one); Log.Message(two); }
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#5
Отправлено 04 января 2012 - 06:47
Отвечая на вопрос: в общем случае вам придется передавать нужные значения всех параметров, которые предшествуют параметру Picture.
Однако конкретно ваша ситуация (помещать в лог скриншот в случае ошибки) решается проще: в нактройках проекта (правый клик по имени проекта, Edit - Properties - Playback) включите опцию Post image on error (она там внизу под кучей других опций).
Спасибо большое за ответы. Опция Post image on error включена. Однако, в моем случае это не самый лучший вар-т, т.к. перед сообщением об ошибке я закрываю приложение (для того, чтобы следующий тесткейс начался "с чистого листа"). Соответственно, во время логирования ошибки, мы имеем не самый "красивый" скриншот. Я хотел решить это сделав скриншот перед закрытием приложения и передав его в лог ошибки. Но это не столь существенная проблема. Просто на примере данной функции хотелось узнать, каким образом работать с параметрами по умолчанию в будущем.
#6
Отправлено 04 января 2012 - 11:51
Log.Picture(aPicture); Log.Error("Error message");Будет 2 записи в логе вместо одной, но отпадает необходимость колдовать с лишними аргументами.
2. Что касается своих функций с "умолчальными" параметрами. В JS обычно делают так:
function myFunc(args){ if (typeof(args.a) == "undefined"){ args.a = 1; } if (typeof(args.b) == "undefined"){ args.b = 2; } if (typof(args.c) == "undefined"){ args.c = 3; } Log.Message(args.a); Log.Message(args.b); Log.Message(args.c); } ... myFunc({a:2,c:3}); myFunc({b:4});
#7
Отправлено 04 января 2012 - 12:55
2. Что касается своих функций с "умолчальными" параметрами. В JS обычно делают так:
о, круто, спасибо :)
подход с объектом я как-то даже не рассматривал :)
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных