【问题标题】:Confused on importing python module runtime对导入 python 模块运行时感到困惑
【发布时间】:2012-06-19 07:19:28
【问题描述】:

亲爱的,我正在尝试在运行时导入一个 python 模块(从 admincases 导入 admincases)并遇到问题。请求您的指导。

import os
import threading
import sys
import Queue
import unittest
import time
import logging
from functions import functions
from functions import db_connect
from one import ParametrizedTestCase
#from admincases import admincases
import MySQLdb as mdb

class inittest(unittest.TestCase):

    fun = functions()
    db = db_connect()
    cur = db.db_conn()
    cur.execute ("SELECT * FROM testcase")
    testcases = cur.fetchall ()
    for testcase in testcases:
        print "%s, %s" % (testcase[0], testcase[1])
        import_string = "from " + testcase[1] + " import " + testcase[1]
        print import_string
        exec import_string
        case = str_to_class(testcase[1])
        print case
        print "Number of rows returned: %d" % cur.rowcount
    suite = unittest.TestSuite()
    suite.addTest(ParametrizedTestCase.parametrize(case, param=EppQueue,queue1=CrQueue))
    unittest.TextTestRunner(verbosity=2).run(suite)
    raw_input("keyy")

执行此代码时,出现以下错误:

 return getattr(sys.modules[__name__], str)
AttributeError: 'module' object has no attribute 'admincases'

不知道怎么回事

问候 文卡特.S

【问题讨论】:

  • #from admincases import admincases 在评论中?
  • @AshwiniChaudhary 是的,这是我试图动态加载的模块
  • 如果它是一个包,它是否与这个脚本在同一个目录中,它在那个文件夹中是否有__init__.pyadmincases 究竟有什么或现在是什么?
  • @Ragav AttributeError: 'module' object has no attribute 'admincases' 告诉你 admincases 中没有任何名称为 admincases
  • @samy.vilar 是的,它在同一个目录中,它没有任何init方法调用..它包含测试程序

标签: python unit-testing python-2.7


【解决方案1】:

正如 samy.vilar 所暗示的,您似乎应该确保 admincases 模块具有 admincases 变量。事实上,你的代码是from admincases import admincases

我的猜测是,如果你让from admincases import admincases 工作,那么你的代码应该工作。

【讨论】:

  • 是的,当我导入“从 admincases 导入 admincases”时它确实有效,但我必须动态执行此导入,这就是我面临的问题
【解决方案2】:

我通过以下方法实现了它:

test_mod = __import__(testcase[1], fromlist=[])
test_class =  getattr(test_mod, testcase[1])

【讨论】:

    猜你喜欢
    • 2013-08-20
    • 2021-04-29
    • 2015-12-24
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 2019-08-29
    相关资源
    最近更新 更多