2014-12-29 3 views
0

У меня есть несколько тестов внутри одного теста, но я заметил, что он работает только первый тестВыполнение всех тестов селена внутри теста

import unittest 
from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
from selenium.webdriver.support.ui import WebDriverWait 

class Test(unittest.TestCase): 

    def setUp(self): 
     self.driver = webdriver.Firefox() 
     self.base_url = "http://www.example.com/" 
    def test_Google(self): 
     driver = self.driver 
     driver.implicitly_wait(10) 
     driver.get(self.base_url) 
    def fill_contact(self): 
     driver.find_element_by_xpath('//a[contains(.,"Contact")]').click() 
     driver.implicitly_wait(10) 
     driver.find_element_by_xpath('//input[@type="submit"][@value="Send"]').click() 

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

if __name__ == "__main__": 
    unittest.main() 

Всякий раз, когда я запускаю это он работает только

def test_Google(self) 

и ничего после этого. Я делаю что-то неправильно?

ответ

3

Методы должны начинаться с 'test' для автоматического запуска.

Per the docs:

TestCase создается подклассов unittest.TestCase. Три отдельных теста определяются методами, имена которых начинаются с символов test. Это соглашение об именах информирует тестировщика о , какие методы представляют тесты. (курсив мой)


TestLoader отвечает за испытание нагрузки и возвращение их завернутыми в TestSuite. Он использует this method to identify tests:

Таким образом, attrname.startswith(prefix) проверяет, является ли имя метода начинается с 'test'.

1

В качестве альтернативы тому, что @unubtu отметил:

вы можете использовать nose test runner и пометить метод с @istest decorator:

from nose.tools import istest 

class Test(unittest.TestCase): 
    ... 

    @istest 
    def fill_contact(self): 
     driver.find_element_by_xpath('//a[contains(.,"Contact")]').click() 
     driver.implicitly_wait(10) 
     driver.find_element_by_xpath('//input[@type="submit"][@value="Send"]').click() 

Кроме того, здесь очень хороший обзор открытия в unittest тест:

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