2016-02-29 119 views
0

我正在学习使用Selenium WebDriver和Python编写自动测试。我在WidgetArea类中有几个测试,我想在Firefox的一个实例中运行它们,我知道我需要指定setUptearDown作为@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

谢谢,我是一般的自动测试新手,还有OOP语言中的alos,所以我很喜欢从开始和单元测试接缝的一些东西开始,作为很好的选择。我认为我已经开始编写我自己的自动框架了,据我所知:) – vertigo448

+0

@Andersson你知道我的问题的答案吗?我有点困在这堵墙上:/谢谢 – vertigo448

回答

0

我不selenium使用unittests,所以只要你喜欢尽管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

嗨,非常感谢您的支持:) – vertigo448

+0

如果这很有用,请为此答案+1 +1 Upvote,如果这解决了您的问题,请接受它与检查下的回答率,如果这不起作用,告诉我应该改进什么 – Andersson

+0

嗨,@安德森,+ 1Upvote,我只是在低级别的声誉,使其显示,我接受作为答案。非常感谢你,最好的问候 – vertigo448

相关问题