如何通过机器人框架中的RegExp匹配列表项

时间:2018-03-27 15:19:58

标签: regex robotframework

我正在尝试验证项目列表是否都与正则表达式匹配。

以下是我正在使用的列表${liabilityAccounts}的示例:

[u'Liability: 100-0-20100 Payables', u'Liability: 100-0-20200 Credit Cards', u'Liability: 100-0-20300 Designated Funds', u'Liability: 100-0-20400 Miscellaneous Liabilities', u'Liability: 100-0-20500 DoH Liability', u'Liability: 200-0-20100 Payables']

我正在尝试循环这些项目以验证每个项目是否符合以下格式:"责任:XXX-XX-2XXX"通过:

:FOR  ${item}  IN  ${liabilityAccounts}
\  Should Match Regexp  ${item}  ^Liability: \\d{3}-\\d{1}-2\\d{4}.*$

我收到错误:

TypeError: expected string or buffer

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

在:FOR循环中表示数组时,需要对包含要迭代的项的变量使用@。例如:

:FOR  ${item}  IN  @{liabilityAccounts}

因为您使用$,所以循环将只运行一次,${item}将设置为列表的全部内容。这就是你获得TypeError的原因,因为关键字被赋予了一个列表而不是一个字符串。

这是一个完整的工作示例:

*** Variables ***
@{liabilityAccounts}  
...  Liability: 100-0-20100 Payables
...  Liability: 100-0-20200 Credit Cards
...  Liability: 100-0-20300 Designated Funds
...  Liability: 100-0-20400 Miscellaneous Liabilities
...  Liability: 100-0-20500 DoH Liability
...  Liability: 200-0-20100 Payables

*** Test cases ***
Example
    :FOR  ${item}  IN  ${liabilityAccounts}
    \  should match regexp  ${item}     ^Liability: \\d{3}-\\d{1}-2\\d{4}.*$