2017-03-02 6 views
4

Ich möchte meine Ansichten mit Daten von Postgres Localhost Datenbank (mit bereits geladenen Daten) zu testen. Ich verwende Tox mit Pytest und Pytest-Django.Wie man Tests im Django unter Verwendung der Datenbank mit Daten durchführt?

Meine Frage: Wie Einrichten/Herstellen einer Verbindung zur lokalen Datenbank, um alle Datenmodellschema und Daten selbst zu erhalten? Oder ist es besser, factory_boy zu verwenden? Oder um ganze Daten aus. SQL-Skript zu laden (wenn ja, wie)?

Beispiel meines Test:

def test_foo_view(custom_client_login): 
    response = custom_client_login.get('/foo/bar/123/') 

    assert response.status_code == 200 
    assert 'Transaction no. 123' in response.content 

Aber statt Statuscode 200 bekomme ich 404 erhalten, die zeigt, dass keine Daten in Testdatenbank ist. Aber wenn ich runserver Mittagessen und gehe zu dieser Ansicht ('localhost:8000/foo/bar/123/') Ich werde Status 200 und HTML-Webseite mit einigen Daten erhalten.

Bitte helfen!


Ich verwende:

  • Django == 1.7.11
  • pytest == 3.0.6
  • pytest-django == 3.1.2
  • tox == 2.6.0
+0

Verwenden Sie den Test Runner-Setup (def setUp) und eine Website erstellen, in der View Test – Jingo

+0

@Jingo könnten Sie bitte etwas mehr über Ihre Antwort ausarbeiten benutzen? ist nicht def defUp mit unittest verwenden? – MichalTHEDUDE

+0

https://docs.djangoproject.com/en/1.10/topics/testing/overview/ Werfen Sie einen Blick auf diese – Jingo

Antwort

2

gefunden Nur eine Art und Weise! Es war einfacher als ich dachte! Ohne das Schreiben eines benutzerdefinierten TestRunners etc.

Die Antwort ist in pytest-django docs in Kapitel 5 -> Beispiele -> Verwenden Sie eine schreibgeschützte Datenbank.

Schauen Sie sich andere Beispiele, die in solchen Situationen sehr praktisch sind.

Danke!

Verwandte Themen