Versuche, Python TestSuite zu implementieren

Ich habe zwei Testfälle (zwei verschiedene Dateien), die ich in einer Test Suite zusammenführen möchte. Ich kann die Tests laufen lassen, nur indem du Python läuft "normal", aber wenn ich wähle, um einen Python-Unit-Test zu starten, heißt es 0 Tests laufen. Im Moment versuche ich nur, mindestens einen Test zu bekommen, um korrespondierend zu rennen.

import usertest import configtest # first test import unittest # second test testSuite = unittest.TestSuite() testResult = unittest.TestResult() confTest = configtest.ConfigTestCase() testSuite.addTest(configtest.suite()) test = testSuite.run(testResult) print testResult.testsRun # prints 1 if run "normally" 

Hier ist ein Beispiel für meinen Testfall

 class ConfigTestCase(unittest.TestCase): def setUp(self): ##set up code def runTest(self): #runs test def suite(): """ Gather all the tests from this module in a test suite. """ test_suite = unittest.TestSuite() test_suite.addTest(unittest.makeSuite(ConfigTestCase)) return test_suite if __name__ == "__main__": #So you can run tests from this module individually. unittest.main() 

Was muss ich tun, um diese Arbeit richtig zu machen?

4 Solutions collect form web for “Versuche, Python TestSuite zu implementieren”

Du willst einen Testuit benutzen. Also brauchst du nicht unentwurflich zu benennen. Verwendung von Testsuit sollte so sein ..

 #import usertest #import configtest # first test import unittest # second test class ConfigTestCase(unittest.TestCase): def setUp(self): print 'stp' ##set up code def runTest(self): #runs test print 'stp' def suite(): """ Gather all the tests from this module in a test suite. """ test_suite = unittest.TestSuite() test_suite.addTest(unittest.makeSuite(ConfigTestCase)) return test_suite mySuit=suite() runner=unittest.TextTestRunner() runner.run(mySuit) 

Der ganze Code, um einen Loader und eine Suite zu erstellen, ist unnötig. Sie sollten Ihre Tests so schreiben, dass sie über Test-Entdeckung mit Ihrem Lieblings-Test-Läufer runnable sind. Das bedeutet nur, dass Sie Ihre Methoden standardmäßig benennen und sie in einen importierbaren Ort stellen (oder einen Ordner mit dem Läufer übergeben) und von unittest.TestCase erben. Nachdem du das getan hast, kannst du python -m unittest discover am einfachsten, oder ein schöner Dritter Läufer zu entdecken und dann führen Sie Ihre Tests.

Ich gehe davon aus, dass Sie sich auf den laufenden Python-Unit-Test gegen das Modul beziehen, das den beiden Test konsolidiert. Es wird funktionieren, wenn Sie Testfall für dieses Modul erstellen. Unterklassen unittest.TestCase und mit einem einfachen Test, der mit dem Wort 'Test' beginnt.

z.B

 class testall(unittest.TestCase): def test_all(self): testSuite = unittest.TestSuite() testResult = unittest.TestResult() confTest = configtest.ConfigTestCase() testSuite.addTest(configtest.suite()) test = testSuite.run(testResult) print testResult.testsRun # prints 1 if run "normally" if __name__ == "__main__": unittest.main() 

Wenn Sie versuchen, manuell TestCase s zu sammeln, ist dies nützlich: unittest.loader.findTestCases() :

 # Given a module, M, with tests: mySuite = unittest.loader.findTestCases(M) runner = unittest.TextTestRunner() runner.run(mySuit) 
  • Python: Wie mache ich temporäre Dateien in meiner Test-Suite?
  • Mocked Class & Asserting Methodenaufrufe
  • Wie soll ich einen Codegenerator testen?
  • Wie funktioniert Unit 'mkdir' Funktion ohne Dateisystemzugriff?
  • Einen bestimmten Testfall in Django ausführen, wenn deine App ein Testverzeichnis hat
  • Neo4j ImpermanentDatabase in python unittests
  • Wie man nosetests ausführt, ohne den Matplotlib-Graphen zu zeigen?
  • Mock für Zeile in offen (Datei):
  • Django Test Coverage vs Code Abdeckung
  • Verwenden von SimpleHTTPServer für Unit-Tests
  • Wickeln Sie einen offenen Stream mit io.TextIOWrapper
  • Python ist die beste Programmiersprache der Welt.