问题说明
两个目录:testcases和api ,目的是想在testcases中的test_001.py中调用api/test_api的一个类变量。在如下图导入类后,命令行运行:pytest -vs testcases 报错:ModuleNotFoundError: No module named ‘api’ , 意思很明显,找不到api模块
解决思路
在网上找了一些资料,大意都是把当前项目的根目录加到系统环境变量。然后再执行
项目根路径:“C:\Users\jam96\PycharmProjects\test20220417”可以通过右击项目名,copy path 得到的,如下图所示:
**但是!!!**由于我自己也是个萌新,就直接在test_001.py文件,Test_jxd()类上面加上了sys.path.append(r"C:\Users\jam96\PycharmProjects\test20220417")
运行还是报错,如下图所示:
其实是顺序搞反了,应该先加环境变量路径再导包!!!
改变了编码顺序后再次pytest -vs testcases ,成功了,哦耶✂
但存在一个问题,代码不够灵活 再进阶一点,改变编码如下:
import os
import sys
root_path=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(root_path)
from api.test_api import Test_gyy
执行结果如下图,不会报错,哦耶✂
至于代码含义:
os,sys都是python内置的模块,直接:import 导包即可
os.path.abspath(file):获取当前文件的绝对路径
os.path.dirname():得到文件的目录
os.path.dirname(os.path.abspath(file)):也就是代表着得到当前文件的目录.具体用法如下所示:
这也是为什么需要在解决题主遇到的问题是使用了两次os.path.dirname:
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
打印结果:既是项目路径
C:\Users\jam96\PycharmProjects\test20220417
sys.path.append(dir):表示把dir追加到环境变量
问题到此解决,任何时间开始学习都不晚,加油,陌生人!