背景:
执行robot /home/12345678@abc.abcde/test测试用例/TestSuites/RdmaTestDemo.robot
[ ERROR ] Calling method '_start_suite' of listener 'DataDriver' failed: UnicodeEncodeError: 'ascii' codec can't encode characters in position 29-32: ordinal not in range(128)
报错说是下标为29-32的字符不能被ascii编码,因为/home/12345678@abc.abcde/test测试用例/TestSuites/RdmaTestDemo.robot中“测试用例”刚好是下表为29-32的字符,不能被ascii编码。
解决方法一:
将中文改成英文,就不报错了。
解决方法二:
出现中文在所难免,根据报错信息Calling method '_start_suite' of listener 'DataDriver' failed是调用DataDriver这个包的_start_suite方法报的错,找到调用该方法的py文件:
/home/12345678@abc.abcde/.local/lib/python2.7/site-packages/DataDriver/DataDriver.py
文件开头第一行已经有了
# coding=utf-8
再加上
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
就不报错了。
另一种报错:
如果去掉文件开头第一行# coding=utf-8,只保留
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
就会报这样的错:
[ ERROR ] Error in file '/home/12345678@abc.abcde/test测试用例/TestSuites/RdmaTestDemo.robot': Importing test library 'DataDriver' failed: SyntaxError: Non-ASCII character '\xc3' in file /home/12345678@abc.abcde/.local/lib/python2.7/site-packages/DataDriver/DataDriver.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details (DataDriver.py, line 1)
只有在文件开头第一行加上# coding=utf-8才能不报错。
建议:
使用python2写程序时,需要加上
# coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
以避免不必要的中文编码问题。