Синтаксис Selenium для верификаций, которые работают с Hudson / jenkins - PullRequest
1 голос
/ 05 октября 2011

Я просмотрел различные учебные пособия и сообщения о переполнении стека и понял, что Selenium может выводить результаты XML-теста таким образом, чтобы Хадсон мог читать / сообщать о них в формате HTML.

Что я не понимаю, так этосинтаксис для использования в Python, чтобы результаты выглядели примерно так: Testcase_LoginPage.VerifyButton1Present fail

Testcase_LoginPage.VerifyButton2Present pass

В настоящее время,когда я детализирую результаты в Hudson, они не будут отформатированы таким полезным способом, как я описал выше, а также сообщат, что он выполнял только ОДИН тест, даже если он выполнял несколько тестов подтверждения:

Трассировка (последний вызов был последним): файл "D: \ Temp \ 1TestingApps \ Selenium \ Scripts \ SampleScripts \ SamCodeSample \ test \ SOreports.py", строка 22, в tearDown self.assertEqual ([], self.verificationErrors) AssertionError:Списки различаются: []! = ['Кнопка регистрации, выпуск2']

Второй список содержит 1 дополнительный элемент.Первый дополнительный элемент 0: кнопка регистрации, выпуск2

  • []
  • ['кнопка регистрации, выпуск2']

Выполнение 1 теста за 13,610 с

FAILED (ошибки = 1)

Создание отчетов XML ...

Код приведен ниже.Заранее благодарим за помощь!

от импорта селена импорт селена unittesttest, xmlrunner, os, re

Класс Demo (unittest.TestCase):

def setUp(self):
    self.verificationErrors = []
    self.selenium = selenium("localhost", 4444, "*chrome", "https://workflowy.com/")
    self.selenium.start()

def test_hh(self):
    sel = self.selenium
    sel.open("/accounts/register/")
    try: self.assertEqual("Sign Up FAIL", "Sign Up FAIL","Sign Up button issue1")
    except AssertionError, e: self.verificationErrors.append(str(e))
    try: self.assertEqual("Sign Up FAIL", "Sign Up FAIL1","Sign Up button issue2")
    except AssertionError, e: self.verificationErrors.append(str(e))

def tearDown(self):
    self.selenium.stop()
    self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
#have to format the code this way as SO is complaining about 'bad indent'
    unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

У вас определен только один тест, поэтому он может сообщить только один тест.Один тест - это метод теста, а не утверждение assert.Вы можете иметь несколько утверждений в одном тесте, так как вам может потребоваться подтвердить несколько результатов, чтобы подтвердить успешный результат теста.

Таким образом, первым шагом к желаемому результату будет помещение второго утверждения в метод второго теста, тогда вы должны увидеть два результата теста.

0 голосов
/ 10 октября 2011

Я наконец-то понял, как сделать так, чтобы проверки и утверждения были представлены в удобном для меня формате.Проблема заключается в том, что в структуре тестов по умолчанию при простом экспорте записанного сценария Selenium IDE в файл Python RC не хватает большого количества деталей, которые мне были нужны.

Что я изменил: - Поместил запуск Selenium иметоды stop в классах Setup и tearDown, которые не позволяли Selenium перезапускать браузер с каждым новым определенным методом проверки / подтверждения
- Добавлены описания ошибок, которые включают имя тестового случая с помощью inspect.stack ()


import inspect, unittest, xmlrunner
from selenium import selenium

class TESTVerifications(unittest.TestCase):
@classmethod
def setUpClass(self):
    self.selenium = selenium("localhost", 4444, "*iexplore", "https://workflowy.com/")
    self.selenium.start() 
    self.selenium.set_timeout("60000")
    print("setUpClass")      
    self.selenium.window_maximize()
    self.selenium.open("/")


def setUp(self):
    self.verificationErrors = []

def test_verification1_error(self):
    try: self.assertEqual("This application is designed", "This application is designedZZZZ",(inspect.stack()[0][3]) +" text missing 'This application is designed'")
    except AssertionError, e: self.verificationErrors.append(str(e))
def test_verification2_error_two_times(self): 
    sel = self.selenium
    ##No such element exception
    try: self.assertEqual("First failure", "First failureZZZZ",(inspect.stack()[0][3]) +" First failure'")
    except AssertionError, e: self.verificationErrors.append(str(e))
    try: self.assertEqual("Second Failure", "Second FailureZZZZ",(inspect.stack()[0][3]) +" Second failure'")
    except AssertionError, e: self.verificationErrors.append(str(e))

def tearDown(self):
    #self.selenium.stop()
    self.assertEqual([], self.verificationErrors,"Results: " + str(self.verificationErrors))
@classmethod    
def tearDownClass(self):

    self.selenium.stop()
    print("tearDownClass")

if __name__ == "__main__":
#    unittest.main()
unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))
...