So verwenden Sie Python Unittest TearDownClass mit TestResult.wasSuccessful()Python

Python-Programme
Guest
 So verwenden Sie Python Unittest TearDownClass mit TestResult.wasSuccessful()

Post by Guest »

Ich wollte setUpClass und TearDownClass aufrufen, damit Setup und Teardown nur einmal für jeden Test durchgeführt werden. Allerdings schlägt es bei mir immer wieder fehl, wenn ich „tearDownClass“ aufrufe. Ich möchte nur ein Testergebnis aufzeichnen, entweder PASS, wenn beide Tests bestanden wurden, oder FAIL, wenn beide Tests fehlgeschlagen sind. Wenn ich nur Setup und TearDown aufrufe, funktioniert alles einwandfrei:

SetUpClass und TearDownClass aufrufen:

Code: Select all

#!/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()
Fehler:

Code: Select all

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)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post