В Python unittest, есть ли способ написать код, который запускается в случае ошибки подтверждения? - PullRequest
0 голосов
/ 25 января 2020

Я использую библиотеку Python unittest для написания некоторых тестов с Selenium. Один из этих тестов включает в себя переход от одной страницы к другой, проверку утверждения, а затем возврат на предыдущую страницу следующим образом:

def test_CheckNextPage(self):
     self.nextPageLink.click()
     self.assertEqual('The Next Page', self.driver.title)
     self.driver.back()

Если в случае неудачи подтверждения, self.driver.back() Строка никогда не достигается, поэтому все дальнейшие тесты выполняются не на той странице, что приводит к ошибкам.

Есть ли способ написать блок кода, который будет выполняться в случае сбоя после подтверждения, поэтому в случае сбоя я могу запустить какой-то другой код, чем если бы утверждение прошло? (этот блок, конечно, включает строку self.driver.back()).

Ответы [ 2 ]

0 голосов
/ 27 января 2020

В этом случае я исправил проблему, используя попытку / исключение, чтобы эффективно создать два разных пути выполнения. Один путь для случая, когда утверждение не выполнено, а другой для того, когда оно проходит.

def test_CheckNextPage(self):
     self.nextPageLink.click()
     try: self.assertEqual('The Next Page', self.driver.title)
     except: 
          self.driver.back()
          self.fail("Page title does not match expectation")

     self.driver.back()

При этом мы получаем полный отчет об ошибке из утверждения и наше ручное сообщение об ошибке. Таким образом, мы можем гарантировать, что self.driver.back() вызывается независимо от того, что, так что остальные тесты будут работать правильно.

0 голосов
/ 25 января 2020

Возможно, вы ищете метод tearDown. Ниже приведен пример generi c.

import unittest

class SimpleWidgetTestCase(unittest.TestCase):
    def setUp(self):
        self.widget = Widget('The widget')

    def runTest(self):
        # your test

    def tearDown(self):
        self.widget.dispose()
        self.widget = None

Если setUp () завершился успешно, будет запущен метод tearDown () независимо от того, завершился ли runTest () или нет.

Посмотрите на часть setUp и tearDown документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...