2014-07-22 15 views
5

Próbuję przetestować aplikację, ale nie wiem jak skonfigurować Django allauth w środowisku testowym. Dostaję:Testowanie Django allauth

ImproperlyConfigured: No Facebook app configured: please add a SocialApp using the Django admin

Moje podejście do tej pory do wystąpień obiektów aplikacji wewnątrz tests.py z rzeczywistymi Facebooku parametrów aplikacji, app, który działa prawidłowo lokalnie w przeglądarce:

from allauth.socialaccount.models import SocialApp 

apper = SocialApp.objects.create(provider=u'facebook', 
    name=u'fb1', client_id=u'7874132722290502', 
    secret=u'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') 
apper.sites.create(domain='localhost:8000', name='creyu.org') 

Jak mogę uruchomić te testy? Dzięki

Odpowiedz

3

Gdzie wewnątrz tests.py masz instancję Ta aplikacja obiekt? Jeśli jest w metodzie setUpModule(), nie powinno być problemu.

osobiście by utworzyć uchwyt init_facebook_app.json z odpowiednimi informacjami i wewnątrz tests.py (przed testów) tworzą:

from django.core.management import call_command  

def setUpModule(): 
    call_command('loaddata', 'init_facebook_app.json', verbosity=0) 

To zapewnia, że ​​dane w urządzeniu są ładowane przed prowadzone są badania oraz, że są one ładowane tylko jeden raz, tj. nie przed każdym testem. Zobacz to dla reference odnośnie polecenia call_command.

Wreszcie opublikowania swojej aplikacji Facebook tajnego klucza nigdzie w internecie nie jest dobrym pomysłem - Chciałbym je zresetować gdybym cię.

+1

miałem instancja obiektu aplikacji wewnątrz TESTCASE 'def'. Oprawy byłoby świetnie, z wyjątkiem Dostaję niekończące nieszczęść wzdłuż linii: http://stackoverflow.com/questions/19857406/django-unable-to-load-test-fixtures-integrityerror czyli co mam kiedy przy użyciu rozwiązania setUpModule. Jakieś inne pomysły? Re: Tajny klucz: Doceniam troskę ale ja randomizowane go przed wysłaniem wiadomości. – KindOfGuy

+1

Hmm, brakuje mi. Spróbuj utworzyć urządzenie ręcznie, aby sprawdzić, czy to działa. Coś w stylu '[{" pk ": 1," model ":" sites.site "," fields ": {" domain ":" 127.0.0.1:8000 "," name ":" creyu.org " }}, {"pk": 1, "model": "socialaccount.socialapp", "fields": {"name": "Facebook", "sites": [1], "secret": "XXX", " client_id ": "XXX", "klucz": "", "dostawca": "facebook"}}]' – kreld

+0

Ponownie, że dławiki z 'ImproperlyConfigured'. Zrobiłem określone segmenty urządzeń bezpośrednio ze zrzutów danych, aby zapewnić ważność. To musi wymagać czegoś więcej. Być może muszę zmierzyć się z głównymi opisanymi wyżej błędami oprawy. Jakieś inne pomysły? Dzięki! – KindOfGuy

0

Chciałbym utworzyć migracji, tak aby wszystkie środowiska posiadają dane

np

import os 
from django.db import models, migrations 
from django.core.management import call_command 
from django.conf import settings 

class Migration(migrations.Migration): 

    def add_initial_providers(apps, schema_editor): 
     import pdb;pdb.set_trace() 
     call_command(
      'loaddata', 
      os.path.join(settings.BASE_DIR,   'fixtures/social_auth.json'), 
     verbosity=0) 

dependencies = [ 
    ('my_app', '001_auto_20160128_1846'), 
] 


operations = [ 
    migrations.RunPython(add_initial_providers), 
] 
Powiązane problemy