【发布时间】:2012-06-17 09:49:57
【问题描述】:
我正在尝试导入 base.py 中的类 PBase(它在同一个文件夹中)
所以我正在做以下事情
from base import PBase
但我收到以下错误
Traceback (most recent call last):
File "test_pricing.py", line 9, in <module>
from base import PBase
ImportError: cannot import name PBase
这是我的base.py
import yaml
import unittest, time, re
class PBase(unittest.TestCase):
def enter_credentials(self, username, password):
self.driver.find_element_by_id("id_username").clear
self.driver.find_element_by_id("id_username").send_keys(username)
self.driver.find_element_by_id("id_password").clear
self.driver.find_element_by_id("id_password").send_keys(password)
self.driver.find_element_by_css_selector("input.btn.btn-success").click()
def get_credentials(self):
with open('credentials.yml', 'r') as f:
doc=yaml.load(f)
return doc
def is_user_logged_in(self):
f= "Account" in self.driver.find_element_by_css_selector(".navbar").text
return f
def log_in_user(self):
self.driver.get(self.login_url)
user_dict=self.get_credentials()
username=user_dict["user"]["username"]
password=user_dict["user"]["password"]
self.enter_credentials(username, password)
self.assertEqual(self.expected_logged_in_title, self.driver.title)
def wait_for_chat_window(self, timeout=5):
WebDriverWait(self.driver, timeout, poll_frequency=0.1).until(lambda b: b.find_element_by_id('habla_beta_container_do_not_rely_on_div_classes_or_names').is_displayed())
time.sleep(3)
def close_modal_window(self):
driver=self.driver
driver.find_element_by_xpath('//a[@class="close"]').click()
def tearDown(self):
if self.is_final_test==1:
self.driver.quit()
【问题讨论】:
-
在同一个目录下是否有一个名为
__init__.py的文件? -
如果你只做
import base会发生什么?它有效吗?可以访问base.PBase吗? -
是的,我在同一个目录中有一个
__init__.py。另外,如果我导入 base 并尝试以 base.PBase 的形式访问它,我会收到以下错误 -Traceback (most recent call last): File "test_pricing.py", line 10, in <module> class TestPricingPage(base.PBase): AttributeError: 'module' object has no attribute 'PBase' -
你能在你定义 PBase 的地方发布你的基本模块或行吗?
-
奇怪的是,在交互式 python 解释器中导入 base 后,我回显了 base.__dict__,它起作用了。