如何断言 pyparsing.ParseResults 内容?
How to assert a pyparsing.ParseResults content?
我想在 pyparsing.ParseResults
class 及其内容上使用 Python assert
进行验证。
此处给出了 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'>
.
我应该调用什么方法才能轻松做出断言?
对parseString
返回的结果使用asList
方法。
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']
我想在 pyparsing.ParseResults
class 及其内容上使用 Python assert
进行验证。
此处给出了 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'>
.
我应该调用什么方法才能轻松做出断言?
对parseString
返回的结果使用asList
方法。
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']