我想使用像Expect之类的东西为简单的面向字节的协议编写测试。测试脚本看起来像是一个简单的流:
send "data"
expect "data"
(其中send发送写入stdout并期望从stdin中读取足够的内容,如果不匹配则退出。)
我不能使用expect本身,因为它是专为缓冲的,面向行的交互而设计的。出于同样的原因,与grep或awk的模式匹配也没有出来。
我可以使用UNIX工具或库吗?如果它是标准的和便携式的,那就更好了,因为它需要与现有程序集成。
答案 0 :(得分:1)
一个有点难看的解决方案是编写一个小的perl或python脚本,它将二进制流转换为文本十六进制数,然后使用Expect来处理它。
答案 1 :(得分:0)
pexpect应该让你使用二进制(字节字符串)没有任何问题,如果你对Python的逻辑是正常的 - 它是纯Python并且可以移植到所有足够unix-y平台(基本上是一个)与pty的;-)。类似地,Python的正则表达式和其他字节串操作对任何二进制字符串都没有任何问题;和struct
和array
之类的Python标准库模块简化了对这些二进制字节字符串的操作,以及它们来回转换为数据的其他类型的有意义的表示。