WebHU - Programozási kérdések és válaszok

A Wagtail gyökéroldal programozott beállítása tesztekhez a StaticLiveServerTestCase Suite használatával

Ez a kérdés hasonló a egy másik, a veremtúlcsordulásról szóló kérdéshez.

Jelenleg tesztek hozzáadása a wagtail webhelyemhez a Django StaticLiveServerTestCase. Az alábbiakban egy példa a kéznél lévő kódbázisra:

class ExampleTest(StaticLiveServerTestCase):
    def setUp(self):
        self.browser = webdriver.Chrome()

    def test_example_test(self):
        self.assertContains("Contact Page", self.browser.content)
    [...]

Tehát amikor ezt a tesztet a python manage.py test paraméterrel futtatom, a teszt meghiúsul, mert 500-as hiba van. Kérem, ne feledje, hogy én wagtail-t használok, és NEM Vanilla Django-t használok egyedül. Én is a Django's Site keretrendszert használom a Wagtail's Site keretrendszerrel szemben, mivel az allauth csak a Django's Site keretrendszerrel való használatot teszi lehetővé.

Miután alkalmazta a @override_settings(DEBUG=True)-t a tesztre, így:

@override_settings(DEBUG=True)
class ExampleTest(StaticLiveServerTestCase):
        def setUp(self):
            self.browser = webdriver.Chrome()
    
        def test_example_test(self):
            self.assertContains("Contact Page", self.browser.content)
        [...]

A teszt továbbra is sikertelen, mivel a betöltendő oldal a wagtail alapértelmezett oldala.

A kérdésem az, hogy hogyan állíthatok be egy másik oldalt gyökér/alapértelmezett wagtail oldalként, hogy amikor a localhost:8000 [vagy a tesztszerver által megadott bármely más portszám] kérése történik a kezdőlapon (azaz http://localhost:8000/), azt az új oldalt látom a wagtail alapértelmezett oldal helyett?

Kösz.

22.09.2020

Válaszok:


1

Mivel a StaticLiveServerTestCase új [ideiglenes] tesztadatbázist hoz létre [beleértve a migrations és migrate futtatását], a wagtail szó szerint visszaállítja az összes webhelyet és oldalt a kezdeti állapotba a kezdeti wagtail start [mysite] parancs után.

Ez azt jelenti, hogy ha van bármilyen másik Page, amelyet gyökéroldalként szeretne használni, akkor ehhez keményen kell kódolnia az utasítást.

Az alábbiakban bemutatjuk, hogyan lehet ezt elérni. Célszerű ezeket az utasításokat egy osztály setUpClass metódusán belül beállítani – általában egy class Main() osztályt, amelyből más tesztosztályok is örökölhetnek; ezzel ösztönözve a D.R.Yt.

class Main(StaticLiveServerTestCase):
    @classmethod
    def setUpClass(cls):
        super(Main, cls).setUpClass()
        cls.root = Page.objects.get(id=1).specific
        cls.new_default_home_page = Index(
            title="New Home Page Index",
            slug="index",
        )
        cls.root.add_child(instance=cls.new_default_home_page)
        cls.site = Site.objects.get(id=1)
        cls.site.root_page = cls.new_default_home_page
        cls.site.save()
        cls.browser = Chrome()

Mostantól a tesztosztályaim (bárhol is legyenek) örökölhetik ezt az osztályt, és azonnal megkaphatják a teljes új kezdőlap-beállítást. Például:

# ExampleTest() inherits from Main() for ease of Wagtail Page setup: avoiding repetition of setUpClass().
class ExampleTest(Main):
    def test_example_test(self):
        self.assertContains("Contact Page", self.browser.title)
    [...]

Remélem, ez egyszer segít valakinek. EZ A MEGOLDÁS ÉRVÉNYES: wagtail==2.7.4. A verzión felüliek nem garantáltan működnek, ahogy a Wagtail kódalapja előírja. Azonban nagyon valószínűtlen, hogy ez nem működne.

23.09.2020
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..