Apama中AUnit测试返回BLOCKED错误求助
解决AUnit测试中
_csv.Error: iterator should return strings, not bytes的问题 这个错误本质是Python 2和Python 3的文件IO兼容性问题——AUnit的Pysys测试脚本大概率是基于Python 2编写的,而你的Apama环境使用的是Python 3,两者在文件读取的默认模式上存在差异:Python 2中用open('file.csv','rb')读取CSV是常规操作,但Python 3的csv模块需要接收字符串而非字节流,直接用二进制模式读取就会触发这个报错。
具体修复步骤:
定位报错的测试脚本
从报错信息可知,问题出在C:\aunit-master\.__test\MathFloatTest\run.py的第27行,同时找到同目录下的MathIntegerTest\run.py(它会报同样的错误,需要一并修改)。修改CSV文件的打开方式
打开对应的run.py文件,找到读取results.csv的代码块(通常在validate方法里):# 原代码可能类似这样 with open(self.output+'/results.csv', 'rb') as f: reader = csv.reader(f)将其修改为Python 3兼容的文本模式读取,并指定编码:
with open(self.output+'/results.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f)注意:如果你的CSV文件使用了其他编码(比如gbk),替换成对应的编码即可。
重新运行测试
修改完成后,再次执行测试命令:c:\aunit-master\bin>aunit test Math
额外建议:
如果你的AUnit是比较旧的版本,建议检查官方是否有更新版本——新版本的AUnit通常已经适配了Python 3环境,能从根源避免这类兼容问题。
内容的提问来源于stack exchange,提问作者Balpreet Singh
相关产品推荐
相关产品推荐

