2016-02-29 3 views
0

Я учусь писать автоматические тесты с использованием Selenium WebDriver с Python. У меня есть пара тестов в классе WidgetArea, я хотел бы запустить их все в одном экземпляре Firefox, я знаю, что мне нужно указать и tearDown как @classmethod, но я не знаю, что еще я должен изменить для достижения этой цели? Код можно найти ниже:Как запустить несколько тестов с одним экземпляром Firefox, Selenium WebDriver с Python?

import unittest 
from selenium import webdriver 


class WidgetArea(unittest.TestCase): 

@classmethod 
def setUp(cls): 

    # create new firefox session 
    cls.driver = webdriver.Firefox() 
    cls.driver.implicitly_wait(30) 
    cls.driver.maximize_window() 
    # navigate to aplication page 
    cls.driver.get("http://demoqa.com/") 
    cls.driver.title 

def test_widget_area(self): 

    elements = self.driver.find_elements_by_xpath("//div[@id='secondary']/aside") 
    self.assertEqual(4, len(elements)) 

def test_widget_list(self): 

    elements = self.driver.find_elements_by_xpath("//ul[@id='menu-widget']/li") 
    self.assertEqual(7, len(elements)) 

def test_interaction(self): 

    elements = self.driver.find_elements_by_xpath("//ul[@id='menu-interactions']/li") 
    self.assertEqual(5, len(elements)) 

@classmethod 
def tearDown(cls): 
    cls.driver.quit() 

if __name__ == '__main__': 
    unittest.main 
+0

Не обязательно выполнять автоматические тесты с использованием 'selenium' как' unittests'. Вы можете создать свой собственный фреймворк и настроить его так же, как вы хотите – Andersson

+0

Спасибо, я новичок в автоматических тестах в целом и alos на языках ООП, поэтому мне нравится начинать с чего-то легкого для начала, а unittest швов - хороший выбор , Я думаю, что я далека от того, что начинаю писать свои собственные автоматические рамки, насколько мне известно :) – vertigo448

+0

@ Andersson do Вы знаете ответ на мой вопрос? Я как бы застрял в стене с этим:/thanks – vertigo448

ответ

0

Я не использую unittests с selenium, так что я могу посоветовать тесты в конкретных рамок, которые вы можете настроить и обновлять, как вам нравится, несмотря на unittests правил:

from selenium import webdriver 

class WidgetArea(): 

    def setUp(self): 
    self.driver = webdriver.Firefox() 
    self.driver.implicitly_wait(30) 
    self.driver.maximize_window() 
    self.driver.get("http://demoqa.com/") 

    def tearDown(self): 
    self.driver.quit() 

    def widget_area(self): 
    elements = self.driver.find_elements_by_xpath("//div[@id='secondary']/aside") 
    try: 
     assert len(elements) == 4 
     print("Test pass") 
    except AssertionError: 
     print("Assertion failed") 

    def widget_list(self): 
    elements = self.driver.find_elements_by_xpath("//ul[@id='menu-widget']/li") 
    try: 
     assert len(elements) == 7 
     print("Test pass") 
    except AssertionError: 
     print("Assertion failed") 

    def interaction(self): 
    elements = self.driver.find_elements_by_xpath("//ul[@id='menu-interactions']/li") 
    try: 
     assert len(elements) == 5 
     print("Test pass") 
    except AssertionError: 
     print("Assertion failed") 

    def main(self): 
    self.setUp() 
    self.widget_area() 
    self.widget_list() 
    self.interaction() 
    self.tearDown() 


if __name__ == '__main__': 
    new = WidgetArea() 
    new.main() 

Все утверждения будут выполняться во время сеанса одного браузера.

+0

HI, большое вам спасибо за это exmple :) – vertigo448

+0

Если это было полезно, пожалуйста, сделайте +1 Upvote для этого ответа, если это решит вашу проблему, пожалуйста, примите это с проверкой по скорости ответа, если это не работает, скажите мне, что должно быть улучшено. – Andersson

+0

HI, @Andersson, + 1Upvote. Я просто на низком уровне репутации, чтобы отображать его, и я принял его как ответ. Большое вам спасибо, с наилучшими пожеланиями. – vertigo448