2016-08-11 2 views
0

Ich verwende Selenium zusammen mit StaticLiveServerTestCase, um eine Django-App zu testen.Djangos StaticLiveServerTestCase-Test läuft alleine, aber scheitert, wenn gruppiert

Der Test ist wie folgt:

class e2eTest(StaticLiveServerTestCase): 
    @classmethod 
    def setUpClass(cls): 
     super(IntegrationTest, cls).setUpClass() 
     cls.data = load_data() 
     cls.driver = webdriver.PhantomJS("path_to_phantomjs") 
     cls.common = common(cls.driver, cls.live_server_url + settings.STATIC_URL + 'index.html') 

    def setUp(self): 
     for data in self.data: 
      data.refresh_from_db() 

    def test_login_1(self): 
     self.common.login('admin') 

    def test_login_2(self): 
     self.common.login('admin') 

load_data() verwendet wird Testdatenbank zu füllen (mit apps models).

Wenn ich laufen:

1- python manage.py test login.tests: die Tests beginnen mit test_login_1. test_login_1 erfolgreich und test_login_2 fehlgeschlagen.

2- python manage.py test login.tests --reverse: Die Tests beginnen mit test_login_2. test_login_2 erfolgreich und test_login_1 fehlgeschlagen.

Ich glaube, es hat etwas mit Daten zu tun, die nach jedem Test gelöscht werden. P.S. Bei Verwendung des gleichen Ansatzes unter Verwendung von django.test.TestCase & setUpTestData und Djangos Test-Client funktioniert es (Senden der Daten an die Login-API direkt).

Kann ich etwas wie setUpTestData von django.test.TestCase haben?

EDIT 1

@luke_aus: load_data() Methoden enthalten die Testdatenbank zu füllen:

from my_app import User, priceModel 
user = User(username='test').set_password('test') 
user.save() 
priceModel = priceModel(name='test') 
priceModel.save() 
.... 

@knbk: Ich verwende Django 1.9. Der Test schlägt immer noch nach dem Passieren --parallel=1.

Vielen Dank für Ihr Feedback!

+0

Was ist in load_data()? –

+0

Wenn Sie Django 1.9+ verwenden: Scheitert es immer noch, wenn Sie '--parallel = 1' übergeben? – knbk

Antwort

0

Das Problem wurde von load_data() verursacht. Die Datenbank wird beim ersten Aufruf von load_data() von setUpClass ausgefüllt und der erste Test wird bestanden. Für den zweiten Test werden die Datenbankdaten gelöscht und nicht aktualisiert.

Ändern load_data() Methode zum Laden von Fixtures löste das Problem.

Verwandte Themen