2016-11-25 1 views
0

Не могли бы вы объяснить, почему DRIVER не равен None в декораторе auto_login. Но DRIVER из метода setUp сначала выводится на выходе, когда я печатаю его из методов setUp и auto_login. И как я могу настроить драйвер глобально из метода setUp.Как настроить драйвер во всем мире для тестов селена из метода setUp в unittest

DRIVER = None 

class BaseTest(unittest.TestCase): 
    def setUp(self): 
     global DRIVER 
     DRIVER = webdriver.Firefox() 
     print("DRIVER setUp: ", DRIVER) 

    def tearDown(): 
     ..... 

И декоратор

def auto_login(email, password): 
    def create_dec(func): 
     def wrapper(*args, **kwargs): 
      print("DRIVER IN DEC: ", DRIVER) 
      login(DRIVER, email, password) 
      func(*args, **kwargs) 
     return wrapper 
    return create_dec 

Это то, как я использую декоратора для испытания

class Test(BaseTest): 

EMAIL = "[email protected]" 
PASSWORD = "xxxxx" 
@auto_login(email=EMAIL, password=PASSWORD) 
    def test_1(self): 
     ...... 

Выход:

DRIVER setUp: <selenium.webdriver.firefox.webdriver.WebDriver (session="e1f7fa5fa4137305c4587535b20b849c")> 
DRIVER IN DEC: None 

ответ

0

Похоже, вы не DRIVER определены в области.

def auto_login(email, password): 
    def create_dec(func): 
     def wrapper(*args, **kwargs): 

      global DRIVER # <--- What happens if you add this line? 

      print("DRIVER IN DEC: ", DRIVER) 
      login(DRIVER, email, password) 
      func(*args, **kwargs) 
     return wrapper 
    return create_dec 
+0

Да, это не помогло –

0

Попробуйте

DRIVER = None 
class BaseTest(unittest.TestCase): 
    def setUp(self): 
     global DRIVER 
     DRIVER = webdriver.Firefox() 
     self.DRIVER=DRIVER 
     print("DRIVER setUp: ", DRIVER) 
     return DRIVER 

    def tearDown(): 
     ..... 

А в вашем тестовом классе

class Test(BaseTest): 
DRIVER=BaseTest.DRIVER 

EMAIL = "[email protected]" 
PASSWORD = "xxxxx" 
@auto_login(email=EMAIL, password=PASSWORD) 
    def test_1(self): 
     ...... 
+0

Это показывает ошибку 'AttributeError: тип объекта 'BaseTest' не имеет атрибута«ДРАЙВЕРА «' –

Смежные вопросы