2013-05-13 42 views
0

我正在做一些本地化测试,我必须测试英语和日语中的字符串。英文字符串可能是'等待时间是{0}分钟。“而日文字符串可能是'待分数',其中{0}是一个可以在测试过程中改变的数字。这两个字符串都来自相应的属性文件。我将如何能够检查字符串的存在以及可以根据正在运行的测试而改变的数字。如何检查字符串中的值是否有变化

我应该添加一个事实,即我正在网页上检查这些字符串,这些字符串将以相关语言显示,具体取决于它们被查看的位置。我正在使用watir来验证文本。

+3

你在问如何构建一个正则表达式来匹配它们,或者如何使用Watir语法来识别HTML元素? – 2013-05-13 14:39:46

+0

我希望能有一个正则表达式来确保显示正确的文本,但我几乎没有使用它们的经验。目前,我正在对文本进行切片,只是在寻找领先的文本,但这对测试并不理想。 displayedText = get_string(“text”)\t if $ osLocation ==“jp” \t \t text = displayedText.slice(0 ..11) else \t \t text = displayedText.slice(0..25) end – 2013-05-13 16:08:07

回答

0

您可以在其他地方阅读关于进行适当语言转换测试的最佳方法的各种理论。

一种典型的方法是用常量代替代码中的所有硬编码文本匹配,然后有一个文件设置可根据所用语言更新的常量。 (我已经看到,通过将该文件的require包装在基于被测试语言的case语句中来完成另一种方法是对每个值使用一个数组或哈希值,通过一个名为'language'的变量枚举,测试动态更改语言。因此,验证会是这个样子

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

匹配文本,其中部分有望改变,但落在预测的模式中,使用正则表达式。我会建议关于ruby正则表达式的一点点阅读,特别是使用ruby中的unicode正则表达式,以及一些使用Rubular等工具来测试正则表达式的实验

在正则表达式上面的例子如:

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

将匹配上面的消息,并期待在中间(请注意,它会如果没有数字显示,失败,如果你想要一个或多个数字零或更多的数字,那么你需要一个*代替+

+0

这是我们在开始使用之前必须查看日文版本的方法。我希望有另一种方法来解决它,因为可能需要新的语言支持。谢谢。 – 2013-05-17 09:47:24

0

不检查文字字符串。检查可用于呈现最终字符串的某种中间形式。

有时候,这是通过指定的消息和任何占位符数据,像做:

[ :waiting_time_in_minutes, 10 ] 

哪里会呈现出作为适当的本地化的文本。

另一种方法是将其中一种语言视为模板,这种模板在灵活性方面更受限制,但大部分时间都适用。在这种情况下,您可以使用英文版作为返回的字符串,并使用助手将其呈现到最终页面。

相关问题