Перейти к содержимому

Фотография

параметры функций по умолчанию


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 kotor

kotor

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 03 января 2012 - 16:38

Здравствуйте!

1. Каким образом при вызове функции оставлять часть дефалтовых параметров нетронутыми, а другую изменять? Например, мы имеем метод:

Log.Error(MessageText, AdditionalInformation, Priority, Attr, Picture, FolderID)

Первый его параметр является обязательным, остальные - опциональные. Из них мне нужно передать параметр Picture, а остальные опциональные параметры оставить без изменений. Первое, что пришло в голову:

Log.Error("Some text", null, null, null, myPicture)

Такой вариант у меня не заработал.

Есть ли решение данной проблемы, или для этого нужно задать параметры перед Picture?

2. Можно ли создавать свои функции с параметрами по умолчанию, и каким образом это можно сделать?

Заранее спасибо за ответы.
  • 0

#2 Zenturio

Zenturio

    Опытный участник

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 03 января 2012 - 18:44

Здравствуйте!

1. Каким образом при вызове функции оставлять часть дефалтовых параметров нетронутыми, а другую изменять? Например, мы имеем метод:

Log.Error(MessageText, AdditionalInformation, Priority, Attr, Picture, FolderID)

Первый его параметр является обязательным, остальные - опциональные. Из них мне нужно передать параметр Picture, а остальные опциональные параметры оставить без изменений. Первое, что пришло в голову:

Log.Error("Some text", null, null, null, myPicture)

Такой вариант у меня не заработал.

Есть ли решение данной проблемы, или для этого нужно задать параметры перед Picture?

2. Можно ли создавать свои функции с параметрами по умолчанию, и каким образом это можно сделать?

Заранее спасибо за ответы.

Просто не пишите параметры. Т. Е будет ,,
  • 1

#3 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 03 января 2012 - 20:57

Просто не пишите параметры. Т. Е будет ,,


Нет, это не так. Так написано в справке, но это ошибка.
На эту тему даже был вопрос в саппорте и я просил зарегистрировать это как новую фичу
http://smartbear.com...c8-828f0ceb2807

Вы можете зарегистрироваться на их форуме и отписаться в той теме, что тоже хотели бы видеть эту функциональность, тогда, возможно, она будет быстрее добавлена :)

Отвечая на вопрос: в общем случае вам придется передавать нужные значения всех параметров, которые предшествуют параметру Picture.
Однако конкретно ваша ситуация (помещать в лог скриншот в случае ошибки) решается проще: в нактройках проекта (правый клик по имени проекта, Edit - Properties - Playback) включите опцию Post image on error (она там внизу под кучей других опций).
  • 1

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#4 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 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);
}

  • 1

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#5 kotor

kotor

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 04 января 2012 - 06:47

Отвечая на вопрос: в общем случае вам придется передавать нужные значения всех параметров, которые предшествуют параметру Picture.
Однако конкретно ваша ситуация (помещать в лог скриншот в случае ошибки) решается проще: в нактройках проекта (правый клик по имени проекта, Edit - Properties - Playback) включите опцию Post image on error (она там внизу под кучей других опций).


Спасибо большое за ответы. Опция Post image on error включена. Однако, в моем случае это не самый лучший вар-т, т.к. перед сообщением об ошибке я закрываю приложение (для того, чтобы следующий тесткейс начался "с чистого листа"). Соответственно, во время логирования ошибки, мы имеем не самый "красивый" скриншот. Я хотел решить это сделав скриншот перед закрытием приложения и передав его в лог ошибки. Но это не столь существенная проблема. Просто на примере данной функции хотелось узнать, каким образом работать с параметрами по умолчанию в будущем.
  • 0

#6 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 04 января 2012 - 11:51

1. В вашем конкретном примере можно делать так:
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});

  • 1

#7 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 04 января 2012 - 12:55

2. Что касается своих функций с "умолчальными" параметрами. В JS обычно делают так:


о, круто, спасибо :)
подход с объектом я как-то даже не рассматривал :)
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных