Всем привет! Подскажите, пожалуйста, почему происходит следующая ситуация.
У меня есть четыре файла (работаю с Python + unittest + selenium webdriver): test.py и test1.py(непосредственно модули с тестами), base.py и module_testsuite.py.
test.py / test1.py имеют примерно следующую структуру:
class ClassUnderTest(Test_Base):
def test_add_entity(self, parameters):
self.driver = Test_Base.driver
self.wait = Test_Base.wait
self.driver.get('http://url')
...etc
module_testsuite.py выглядит примерно так:
def suite():
tsuite = unittest.defaultTestLoader.loadTestsFromTestCase(Test)
tsuite.addTest(unittest.makeSuite(test.ClassUnderTest))
return tsuite
if __name__ == "__main__":
result = unittest.TextTestRunner().run(suite())
sys.exit(not result.wasSuccessful())
и base.py, в котором, как я подозреваю, и кроется проблема:
class Test_Base(unittest.TestCase):
driver = None
wait = None
if driver == None:
def __init__(self): # пробовал вставлять "*args, **kwargs" - ошибка одна и та же (было написано в трассировке, что для __инит__ нужно два порядковых аргумента, а я, мол, передал один
self.driver = self.driver
self.wait = self.wait
self.tearDownClass()
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Firefox()
cls.wait = WebDriverWait(cls.driver, 20)
cls.driver.maximize_window()
cls.driver.get('http://url')
cls.driver.find_element_by_id('Login').send_keys('USER')
cls.driver.find_element_by_id('Password').send_keys('PASSWORD')
submit = cls.driver.find_element_by_class_name('submit')
submit.click()
@classmethod
def tearDownClass(cls):
cls.driver.quit()
cls.driver = None
cls.wait = None
return cls.driver
return cls.wait
при запуске файла с тест-сьютом получаю ошибку: “AttributeError: ‘TestCaseFunction’ object has no attribute ‘_testcase’”. init пришлось добавлять, чтобы обойти другую ошибку - каждый раз при запуске тест-сьюта первый тест-кейс выполнялся, а до второго очередь не доходила, потому что драйвер закрывался после исполнения первого кейса, и появлялась ошибка ConnectionError Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение (при этом отдельно тест-кейсы запускались и отлично исполнялись, либо я убирал из base.py метод tearDownClass - всё работало, но браузер в конце не закрывался). После того, как я начал с помощью init переопределять переменную driver, именно ошибка с подключением исчезла - браузер закрывался и открывался снова на следующем тест-кейсе, но теперь появилась проблема, описанная выше. Подскажите, пожалуйста, где моя ошибка? Либо как можно ещё организовать base.py, чтобы не переопределять каждый раз переменную driver, но и чтобы не было исключения “ConnectionError”. Есть подозрение, что я в целом использую неверный подход…
Заранее большое спасибо!