问题原因:在学习接口测试项目中,处理excel和json文件时候使用到了拼接路径,具体是以下这样用的:
我当前的文件绝对路径是这样的:D:/PythonWorkSpace/interfacetest/Util/handle_excel.py
base_path = os.getcwd()
sys.path.append(base_path)
print(base_path)
print(base_path[0:-4])
D:\PythonWorkSpace\interfacetest\Util
D:\PythonWorkSpace\interfacetest\
以上分别为2行输出。因为我的excel和json的文件路径是在 interfacetest下面的/config下面,所以我在第一个path输出后,我又切片将Util去掉,此后拼接+ 上/config/xx.json 代码是正常运行的。
如果不去掉:则会报想象之中的错误:即文件路径拼接错了:FileNotFoundError: [Errno 2] No such file or directory: 'D:\\PythonWorkSpace\\interfacetest\\Util\\Config\\xxxx
此时我在涉及到使用拼接路径的地方均用的切片后的路径。
在Jenkins的环境变量中,我项目的路径是D:\PythonWorkSpace\interfacetest\ ,一点问题都莫得
但是当我在Jenkins 构建时候,问题出现了:
此时我仔细检查路径,发现正常的interfacetest却变成interface了,所以导致路径错误。那么为什么会产生这样的问题呢,是由于在执行代码时候,因为我在D:\PythonWorkSpace\interfacetest\ 执行的(Jenkins这么配的路径),所以通过os.getcwd()获取到的肯定也是D:\PythonWorkSpace\interfacetest,但是因为我【0:-4】的操作,从而导致变成了interface。 通过在cmd手动执行发现也是获取到的路径是D:\PythonWorkSpace\interfacetest。
于是开始解决问题,第一反应我肯定是改代码里的路径,但是如果在代码里不进行切片的话又会报这样的错:
因为我是想找interfacetest\Case。但是我代码文件是在Util包下的。因为没切片导致的。
其实代码最主要的是想要拼接成 要引用的文件的绝对路径,但是因为使用了os.getcwd()而且还切片,最终导致和工作路径冲突了。
最终我采用的是
base_path = os.path.dirname(os.getcwd())
,而且Jenkins配置的路径是项目里的下一层目录,这样就可以工作路径和代码路径保持同步。都正常运行