zoukankan      html  css  js  c++  java
  • 【python跨目录调用】结合自己遇到的问题到解决问题,作个记录

    写PO的时候,想把page和case 文件分开存不同的文件夹,但是在调用模块的时候就出现了问题。后来终于解决了,记录下

    -------------------------------------------------------------分割线--------------------------------------------------------------------------

    1.文件夹pages存放page文件、test_cases存放测试用例

    2.文件结构如下:

    --pages

    -----login_pg.py

    --test_cases

    -----1_test_login.py

      现在1_test_login.py中调用login_pg.py,这种情况就属于跨目录调用模块,这里要先在文件夹pages下,创建一个__init__.py,这样page就是一个完成的模块,可以被调用。

      下面在文件夹test_cases,下的login_pg.py中调用login_pg.py,如下导入:

    import sys,os

    parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#跨目录调用
    sys.path.insert(0, parentdir)

    from pages.login_pg import LoginPage #这里导入即可

    ########但是,在这样导入后,这里的问题解决了,又出了其他问题###############

    问题:在pages下的login_pg.py,又调用了pages下的base_pg.py中的类,原来的写法:from base_pg import BasePage,但是现在报错,找不到base_pg这个模块。

    解决后:发现要这样写,from .base_pg import BasePage(PS:加上点,形成一个相对login_pg的引用),这样就可以了

    但是这样加. 以后可以还会发生其他的错误,所以这里写成这样:当正常到不进去的时候,就加点

    try:
    from base_pg import BasePage
    except ImportError:
    from .base_pg import BasePage

    ---------------------以上还是需要弄清楚python的引包机制才可以------------------

    自己再研究下

  • 相关阅读:
    HDU1021 Fibonacci Again
    HDU 1016 素数环
    android studio快捷键备忘录
    如何避免app互相覆盖
    Button中小写字母全部都成大写的了
    android java.lang.IllegalStateException: System services not available to Activities before onCreate错误
    ButterKnife没有配置引发的血案
    requestWindowFeature的使用
    bitmap.setPixel抛出了IllegalStateException 异常
    《程序员面试金典》部分题解
  • 原文地址:https://www.cnblogs.com/pingguo-softwaretesting/p/8890878.html
Copyright © 2011-2022 走看看