PyUnit: остановиться после первого проваливания теста?

У меня нет проблем с этим. Удалите закрытие div, которое не нужно в этом контексте, и разделите ваш html и javascript, поскольку это, как правило, хорошая практика

function randomString() {
  var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
  var string_length = 8;
  var randomstring = '';
  for (var i = 0; i < string_length; i++) {
    var rnum = Math.floor(Math.random() * chars.length);
    randomstring += chars.substring(rnum, rnum + 1);
  }
  document.randform.randomfield.value = randomstring;
}
<form name="randform">
  <input class="reload-but" type="button" value="↻ " onClick="randomString()">&nbsp;
  <div class="unnec">
    <input class="random-but" type="button" name="randomfield" value="">
</form>

12
задан AnC 26 March 2009 в 11:48
поделиться

2 ответа

На основе руководства Eugene я придумал следующее:

class TestCase(unittest.TestCase):  
    def run(self, result=None):
        if result.failures or result.errors:
            print "aborted"
        else:
            super(TestCase, self).run(result)

В то время как это работает довольно хорошо, это является немного раздражающим, который должен определить каждый отдельный тестовый модуль, хочет ли это использовать этот пользовательский класс или по умолчанию (переключатель командной строки, подобный py.test --exitfirst, было бы идеально)...

6
ответ дан 2 December 2019 в 07:04
поделиться

Это - функция. Если Вы захотите переопределить это, то необходимо будет разделить на подклассы TestCase и/или TestSuite классы и логика переопределения в run() метод.

P.S.: Я думаю, что необходимо разделить на подклассы unittest.TestCase и переопределенный метод run() в Вашем классе:

def run(self, result=None):
    if result is None: result = self.defaultTestResult()
    result.startTest(self)
    testMethod = getattr(self, self._testMethodName)
    try:
        try:
            self.setUp()
        except KeyboardInterrupt:
            raise
        except:
            result.addError(self, self._exc_info())
            return

        ok = False
        try:
            testMethod()
            ok = True
        except self.failureException:
            result.addFailure(self, self._exc_info())
            result.stop()
        except KeyboardInterrupt:
            raise
        except:
            result.addError(self, self._exc_info())
            result.stop()

        try:
            self.tearDown()
        except KeyboardInterrupt:
            raise
        except:
            result.addError(self, self._exc_info())
            ok = False
        if ok: result.addSuccess(self)
    finally:
        result.stopTest(self)

(Я добавил два result.stop() вызовы к значению по умолчанию run определение).

Затем необходимо будет изменить все тестовые сценарии для создания их подклассами этого нового класса, вместо unittest.TestCase.

ПРЕДУПРЕЖДЕНИЕ: Я не протестировал этот код.:)

5
ответ дан 2 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: