eeechoo / blogs

个人博客
0 stars 0 forks source link

bug&solve #21

Open eeechoo opened 5 years ago

eeechoo commented 5 years ago

问题的出现

平时写自动化测试用例,最常用命令

robot --pythonpath "项目绝对路径" --test "TestCase名称" "TestSuite绝对路径"

某天突然报了一堆如下错误

SyntaxError: Missing parentheses in call to 'print'. Did you mean print(e)?
或者这样的
SyntaxError: invalid syntax (foo.py, line 31)

问题的排查思路

  1. 之前研究过 RobotFramework 源码,怀疑自己是不是把 RF 源码修改了,导致出现这样的情况。
    于是进行了进行了如下操作

    pip uninstall robotframework
    pip install robotframework

    事实证明这个思路就是歪的。根本没有看出错原因。

  2. 查看出错原因,明显是 python3 不支持 python2 语法 print "foobar"
    在 cmder 中进行如下操作

    D:\cmder
    λ which robot
    /c/Python27/Scripts/robot
    
    D:\cmder
    λ robot --version
    Robot Framework 3.0.4 (Python 3.7.2 on win32)

    发现了这个奇怪的问题,这时候突发奇想,试了下

    D:\cmder
    λ cd C:\
    
    D:\cmder
    λ

    这就证明 cmder 不能切换 disk,而导致的问题。项目放在 D 盘,robot 脚本位于 C 盘。

    由于这个问题 和 之前受够了 cmder 命令行多一个字符总是删不掉,末尾总是多一个空格。
    感觉 cmder 并不是十分好用,本着不折腾的原则,果断从 cmder 换成 git-bash 自带的 MinGW64 算了。 切换到 git-bash 自带的 MinGW64 问题果断解决。

教训

  1. 看源码的时候要 pipenv 个新环境
  2. 感觉 cmder 并不成熟,问题多多,而且网上在2016年就出现过 cmder 多一个字符这种问题,2019年我仍然碰见了这个问题。