我正在尝试验证项目列表是否都与正则表达式匹配。
以下是我正在使用的列表${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
我该如何解决这个问题?
答案 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}.*$