2013-05-13 5 views
0

Я занимаюсь локализационным тестированием, и я должен проверять строки на английском и японском языках. Английская строка может быть «Время ожидания - {0} минут». в то время как японская строка может быть «待 ち 時間 は {0} 分 で す.» где {0} - это число, которое может меняться в ходе теста. Обе эти строки исходят от соответствующих файлов свойств. Как я могу проверить наличие строки, а также число, которое может измениться в зависимости от выполняемого теста.Как вы проверяете изменение значения в строке

Я должен был добавить факт, что я проверяю эти строки на веб-странице, которая будет отображаться на соответствующем языке в зависимости от местоположения места, где они были просмотрены. И я использую watir для проверки текста.

+3

Вы спрашиваете, как создать регулярное выражение для их соответствия или как идентифицировать элемент HTML с использованием синтаксиса Watir? –

+0

Я надеялся на регулярное выражение, чтобы обеспечить отображение правильного текста, но у меня мало опыта их использования. На данный момент я нарезаю текст и просто ищу ведущий текст, но это не идеально подходит для теста. отображаетсяText = get_string ("текст") \t if $ osLocation == "jp" \t \t текст = отображаетсяText.slice (0 ..11) Остальные \t \t Текст = отображаетсяText.slice (0..25)конец –

ответ

0

Вы можете прочитать в других источниках различные теории наилучшего способа тестирования для правильного преобразования языка.

Одним из типичных подходов является замена всех скопированных текстовых совпадений в вашем коде с помощью констант, а затем файл, который устанавливает константы, которые могут быть обновлены на основе используемого языка. (Я видел, что это сделано путем переноса требования этого файла в оператор case на основе тестируемого языка. Другой подход - это массив или хеш для каждого значения, перечисляемый переменной с именем типа «язык», которое позволяет тесты изменить язык на лету. Так что валидация будет выглядеть как этот

b.div(:id => "wait-time-message).text.should == WAIT_TIME_MESSAGE[language]

для сопоставления текста, где часть, как ожидается, изменится, но попадают в предсказуемой, используйте регулярное выражение. Я бы рекомендовал небольшое чтение регулярных выражений в ruby, особенно с использованием регулярных выражений Unicode в ruby, а также некоторые эксперименты с инструментом, например Rubular, для тестирования регулярных выражений

В вышеприведенном случае регулярное выражение, таких как:

/Waiting time is \d+ minutes./ или /待ち時間は\d+分です。/

будет соответствовать сообщения выше и ожидать один или несколько цифр в середине (заметим, что оно не будет, если не появляются цифры, если вы хотите ноль или более цифр, тогда вам понадобится * вместо +

+0

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

0

Не проверяйте литеральную строку. Проверьте наличие промежуточной формы, которая может быть использована для отображения окончательной строки.

Иногда это делается путем указания сообщения и любые данные заполнители, как:

[ :waiting_time_in_minutes, 10 ] 

Где что бы вынести, как соответствующий локализованный текст.

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

Смежные вопросы