Frage

Ich entwickle eine Cherrypy -Anwendung und möchte einige automatisierte Tests dafür schreiben. Ich habe mich dafür entschieden, Nosetests dafür zu verwenden. Die Anwendung verwendet SQLALCHEMY als DB -Backend, daher muss ich das Einrichtungspaket verwenden, um feste Datensätze bereitzustellen. Außerdem möchte ich Webtests machen. So setze ich alles zusammen:

Ich habe eine Helferfunktion init_model(test = False) In der Datei, in der alle Modelle erstellt werden. Es stellt eine Verbindung zur Produktion oder mit der Test (falls test == true oder cherrypy.request.app.test == true) her und Anrufe create_all

Dann habe ich eine Basisklasse für solche Tests erstellt:

class BaseTest(DataTestCase):
def __init__(self):
    init_model(True)
    application.test = True
    self.app = TestApp(application)
    self.fixture = SQLAlchemyFixture(env = models, engine = meta.engine, style = NamedDataStyle())
    self.datasets = (
        # all the datasets go here
        )

Und jetzt mache ich meine Tests, indem ich Kinderklassen von Basetest und Anruf erstelle self.app.some_method()

Ich mache zum ersten Mal Tests in Python und all dies scheint sehr kompliziert zu sein. Ich möchte wissen, ob ich die genannten Pakete als beabsichtigte Autoren verwende und ob sie nicht überkompriziert wird.

War es hilfreich?

Lösung

Das sieht meistens wie normaler Testkleber für ein System jeder Größe aus. Mit anderen Worten, es ist nicht übermäßig kompliziert.

Tatsächlich würde ich in einer Hinsicht etwas mehr Komplexität vorschlagen: Ich denke, Sie werden feststellen, dass Sie in jeder Kinder -Testklasse eine neue Datenbank einrichten, um sehr langsam zu sein. Es ist häufiger, mindestens alle Ihre Tische einmal pro Lauf anstelle von einmal pro Klasse einzurichten. Anschließend haben Sie entweder jede Testmethode alle Daten, die sie für ihrer selbst willen benötigen, und/oder Sie führen jeden Testfall in einer Transaktion aus und rollen alles wieder in einem finally: Block.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top