1.出现场景
相信做软件测试的同学在写好Py脚本在windows平台运行通过后,就会想到把脚本代码迁移到linux或其他平台运行,而不是只在本地机器上跑(工作电脑一般下班后关机,而迁移的linux机器24小时待命)。
然而,在linux运行时却看到“文件夹不存在”的提示,查其原因,原来是windows的文件绝对路径是以“\”分割,而linux机器是以“/”分割,在把某个路径加入sys.path时失败所以import这个路径下的文件报错了。
如果没有遇到这种问题,可以出门左转了!
2.解决思路
既然2个平台在路径格式上有不同的要求,那么我先判断当前代码在哪个平台运行再区别添加路径不就好了吗?实现代码如下:
import sys
# 如果是windows平台,路径格式以\\分割;如果是linux格式,以/分割。
if sys.platform == 'win32':
sys.path.append('..\\..') #向上移动2个文件级别
elif sys.platform == 'linux':
sys.path.append('../..')
else:
pass
# 导入新目录下的Tests,即是__init__.py内容
import Tests
有没有第二种解呢?我暂时没想出,但是我想到平时聊的测试群,发到群里问问。
果不其然,这种问题有人遇到并有不同的看法。大佬A说:linux的文件格式同样适用windows平台,你只需全部转成“目录/文件/…”的格式就好了。实验之,所言非虚,这种办法甚好!
3.最终解法
修改文件路径导入和定义文件路径的代码:
import sys
sys.path.append('../..')
# 导入新目录下的Tests,即是__init__.py内容
import Tests
# 定义测试文件路径
test_file = Tests.cur_dir.replace('\\', '/') + '/files/Api_Test_Cases.xls'