我想在assert
类及其内容上使用Python pyparsing.ParseResults
进行验证。
这里给出了一个Python pyparsing代码的工作片段:
import pyparsing as pp
first = pp.Word(pp.srange('[a-zA-Z]'), exact=1)
rest = pp.Optional(pp.Word(pp.srange('[_0-9a-zA-Zz]')))
keyName = pp.Combine(first + rest)
简单的打印输出(并且会产生误导):
print keyName.parseString("Abc_de")
['Abc_de']
#
print ['Abc_de']
['Abc_de']
当然,以下断言失败了:
# Unit test that is faulty
assert keyName.parseString("Abc_de") == ['Abc_de']
单元测试失败...因为['Abc_de']
的类型是list
而keyName.parseString("Abc_de"))
的类型是<class 'pyparsing.ParseResults'>
。
我应该使用什么方法调用以便轻松进行断言?
答案 0 :(得分:2)
对asList
返回的结果使用parseString
方法。
import pyparsing as pp
first = pp.Word(pp.srange('[a-zA-Z]'), exact=1)
rest = pp.Optional(pp.Word(pp.srange('[_0-9a-zA-Zz]')))
keyName = pp.Combine(first + rest)
assert keyName.parseString('Abc_de').asList() == ['Abc_de']