2017-11-29 3 views
0

Ich führe Unit TestCases von Python mit XMLTestRunner.Testbericht erstellt nicht beim Ausführen von XMLRunner

Das ist meine Hauptdatei:

#LoggingService.py 
class LoggerWriter: 
    # used to redirect console msgs to the log 
    def write(self, message): 
     log_event('warning', 'Console', message) 

def direct_console_to_log(): 
    global console_redirected 
    # This function can be called several times. Avoid redirecting more than once 
    if not console_redirected: 
     console_output = LoggerWriter() 
     sys.stderr = console_output 
     sys.stdout = console_output 
     console_redirected = True 

def log_event(level, _id, event_details): 
    # log the event 
    pass 

Das ist mein eines der Testdatei ist:

#LoggingServiceTest.py 
import unittest 
import LoggingService 
from LoggingService import direct_console_to_log 
class Test(unittest.TestCase): 
    @patch('LoggingService.log_event') 
    def test_log_writer(self,log_mock): 
     direct_console_to_log() 
     print ('console msg') 
     self.assertTrue(log_mock.called) 

if __name__ == "__main__": 
    unittest.main() 

habe ich alle die Testdatei von XMLRunner.py auszuführen:

#XMLRunner.py 
from xmlrunner import XMLTestRunner 
import unittest 

test_modules = [file1.Test, file2.Test, LoggingServiceTest.py, .... file25.Test] 
suite = unittest.TestSuite() 

for test_module in test_modules: 
    tests = unittest.TestLoader().loadTestsFromTestCase(test_module) 
    suite.addTests(tests) 

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

Wenn ich versuche, LoggingServiceTest.py-Datei von "XMLRunner.py" auszuführen, dann generiert der Testbericht nicht.Aber wenn ich t Ohne "LoggingServiceTest.py" wird der Bericht erfolgreich generiert.

Und ich bin mir nicht sicher, was mit der Testfall-Funktion (test_log_writer (self, log_mock)) in LoggingServiceTest.py Laufe geschieht. Kann mir jemand

lösche ich verwenden Sie den folgenden Befehl, um den Testfall auszuführen:

Python2.7.14\python.exe -m coverage run -p --branch --source=. --omit=Unit_Tests/*.py Unit_Tests/Testing.py 
+1

Sie sagen * mehr Testdateien *, aber wie viele mehr? Schlägt die Suite im Hintergrund fehl oder erhalten Sie einen Fehler? Wenn letzteres, bitte posten Sie es. Werfen Sie auch einen Blick auf [Wie stelle ich eine gute Frage?] (Https://stackoverflow.com/help/how-to-ask) – chb

+0

Ich erhalte keinen Fehler, die Testfälle werden erfolgreich ausgeführt. – Yasin

Antwort

0

Endlich habe ich die Lösung nach mehr debuggen.

Wenn Starttestfall aus XMLRunner, Es wird einige Dateiobjekte für die Erstellung schreiben stderr und stdout und es ist definiert in sys.stderr, sys.stdout Variable

Und mein Testfall ist die sys.stderr, sys.stdout Variable überschreiben.

So XMLRunner versuchen, Dateiobjekte von sys.stderr, sys.stdout abzurufen, aber es ist nicht da, dann erzeugt es keinen Bericht.

Verwandte Themen