Как использовать Python Unittest TearDownClass с TestResult.wasSuccessful()Python

Программы на Python
Ответить
Anonymous
 Как использовать Python Unittest TearDownClass с TestResult.wasSuccessful()

Сообщение Anonymous »

Я хотел вызвать setUpClass и TearDownClass, чтобы настройка и удаление выполнялись только один раз для каждого теста. Однако у меня по-прежнему не получается, когда я вызываю TearDownClass. Я хочу записать только один результат теста: либо ПРОЙДЕН, если оба теста пройдены, либо НЕ ПРОЙДЕН, если оба теста не пройдены. Если я вызываю только setup и TearDown, то все работает нормально:

Вызов setUpClass и TearDownClass:

#!/usr/bin/python

import datetime
import itertools
import logging
import os
import sys
import time
import unittest

LOGFILE = 'logfile.txt'

class MyTest(unittest.TestCase):

global testResult
testResult = None

@classmethod
def setUpClass(self):

## test result for DB Entry:
self.dbresult_dict = {
'SCRIPT' : 'MyTest.py',
'RESULT' : testResult,
}

def test1(self):

expected_number = 10
actual_number = 10

self.assertEqual(expected_number, actual_number)

def test2(self):

expected = True
actual = True

self.assertEqual(expected, actual)

def run(self, result=None):
self.testResult = result
unittest.TestCase.run(self, result)

@classmethod
def tearDownClass(self):
ok = self.testResult.wasSuccessful()
errors = self.testResult.errors
failures = self.testResult.failures
if ok:
self.dbresult_dict['RESULT'] = 'Pass'
else:
logging.info(' %d errors and %d failures',
len(errors), len(failures))
self.dbresult_dict['RESULT'] = 'Fail'

if __name__ == '__main__':
logger = logging.getLogger()
logger.addHandler(logging.FileHandler(LOGFILE, mode='a'))
stderr_file = open(LOGFILE, 'a')

runner = unittest.TextTestRunner(verbosity=2, stream=stderr_file, descriptions=True)
itersuite = unittest.TestLoader().loadTestsFromTestCase(MyTest)
runner.run(itersuite)
sys.exit()
unittest.main(module=itersuite, exit=True)

stderr_file.close()


Ошибка:

test1 (__main__.MyTest) ... ok
test2 (__main__.MyTest) ... ok
ERROR
===================================================================
ERROR: tearDownClass (__main__.MyTest)
-------------------------------------------------------------------
Traceback (most recent call last):
File "testTearDownClass.py", line 47, in tearDownClass
ok = self.testResult.wasSuccessful()
AttributeError: type object 'MyTest' has no attribute 'testResult'
----------------------------------------------------------------------
Ran 2 tests in 0.006s
FAILED (errors=1)


Подробнее здесь: https://stackoverflow.com/questions/256 ... successful
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»