各位大佬,我想问下这种嵌套导入怎么导入,loginpage.py 的 loginPage 类继承 base.py 的 Page 类, 我运行 test.py 提示 base 不能找到,图片的路径是反斜杠的 我试过每个文件下面放init.py ,然后用 from ..base import Page , 一样没用
改成
from page_obj.base import Page
试试
各位大佬,帮忙看看,谢谢!
谢谢,这个可以,之前试过这个,但是我没注销 sys.path.append ,而且,我那个软件语法(pylint)一直给我爆红,我以为不行
跟你的目录结构有关系,估计是 pylint 觉得你的 page_obj 目录不是顶层目录,在这个目录下面加一个 __init__.py 看看
__init__.py
简单的说,Python 导入机制就是搜索当前工作目录、sys.path、site-packages、pythonpath 一系列目录,如果能找到需要导入的文件就导入,找不到就会报错 注意,你的当前工作目录是 test_case,当 from page_obj import loginPage 时,loginPage 再去 from base import Page,此时,page_obj 并没有在 Python 模块搜索路径当中,所以报错 所以这里要用包的相对导入,from .base import Page,相对导入,就是相对于当前文件位置的导入,解释器就会顺着找到上层目录的 base,然后顺利导入 还有,感觉你的目录结构有问题啊,如果你想做类似框架的东西,你应该把基础代码封装成包,供写 case 导入,case 放到另外一边用 git 之类的管理
看图片是没有 init.py 让当前目录变成模块。上面说的很对啊,要学下 python 导入机制
在命令行运行, 因为我搞不清 ide 当前工作目录到底在哪;写不出超过 100 行的代码,用啥 ide...
谢谢,之前不知道相对导入跟运行文件有关系,直到第一个回复提醒后,就意识到了,嗯,另外,请教一下,这个目录结构有什么问题呀,我是看书 Page object 代码设计思路参考的,test_case 目录下就是这样的,一个/models ,一个/page_obj,page_obj 放各个页面的需要操作,*_run_test.py 就是各种页面的用例了