{"title":"Enhetstester","version":"5.2","locale":"sv","docname":"internals/contributing/writing-code/unit-tests","url":"/sv/5.2/internals/contributing/writing-code/unit-tests/","canonical":"https://djangodocs.dev/sv/5.2/internals/contributing/writing-code/unit-tests/","summary":"Django levereras med en egen testsvit i katalogen tests i kodbasen. Det är vår policy att se till att alla tester godkänns hela tiden.","html":"<h1>Enhetstester<a class=\"heading-anchor\" href=\"#unit-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django levereras med en egen testsvit i katalogen <code class=\"docutils literal notranslate\">tests</code> i kodbasen. Det är vår policy att se till att alla tester godkänns hela tiden.</p>\n<p>Vi uppskattar alla bidrag till testsviten!</p>\n<p>Django-testerna använder alla den testinfrastruktur som levereras med Django för att testa applikationer. Se <a class=\"reference internal\" href=\"/sv/5.2/topics/testing/overview/\"><span class=\"doc\">Skriva och köra tester</span></a> för en förklaring av hur man skriver nya tester.</p>\n<section id=\"running-the-unit-tests\">\n<span id=\"running-unit-tests\"></span><h2>Kör enhetstesterna<a class=\"heading-anchor\" href=\"#running-the-unit-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"quickstart\">\n<h3>Snabbstart<a class=\"heading-anchor\" href=\"#quickstart\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Först, <a class=\"reference external\" href=\"https://github.com/django/django/fork\">fork Django på GitHub</a>.</p>\n<p>För det andra, skapa och aktivera en virtuell miljö. Om du inte är bekant med hur du gör det, läs vår <a class=\"reference internal\" href=\"/sv/5.2/intro/contributing/\"><span class=\"doc\">Bidragshandledning</span></a>.</p>\n<p>Därefter klonar du din fork, installerar några krav och kör testerna:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-0-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>git clone https://github.com/YourGitHubName/django.git django-repo\n<span class=\"gp\">$ </span><span class=\"nb\">cd</span> django-repo/tests\n<span class=\"gp\">$ </span>python -m pip install -e ..\n<span class=\"gp\">$ </span>python -m pip install -r requirements/py3.txt\n<span class=\"gp\">$ </span>./runtests.py\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-0-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> git clone https://github.com/YourGitHubName/django.git django-repo\n<span class=\"gp\">...\\&gt;</span> <span class=\"k\">cd</span> django-repo\\tests\n<span class=\"gp\">...\\&gt;</span> py -m pip install -e ..\n<span class=\"gp\">...\\&gt;</span> py -m pip install -r requirements\\py3.txt\n<span class=\"gp\">...\\&gt;</span> runtests.py \n</code></pre></div></div></div>\n<p>För att installera kraven krävs troligen några operativsystemspaket som inte finns installerade på din dator. Du kan vanligtvis ta reda på vilket paket som ska installeras genom att göra en webbsökning efter den sista raden eller så i felmeddelandet. Försök att lägga till ditt operativsystem i sökfrågan om det behövs.</p>\n<p>Om du har problem med att installera kraven kan du hoppa över det steget. Se <a class=\"reference internal\" href=\"#running-unit-tests-dependencies\"><span class=\"std std-ref\">Kör alla tester</span></a> för information om hur du installerar de valfria testberoendena. Om du inte har installerat ett valfritt beroende kommer de tester som kräver det att hoppas över.</p>\n<p>För att köra testerna krävs en inställningsmodul för Django som definierar vilka databaser som ska användas. För att hjälpa dig att komma igång tillhandahåller och använder Django en exempelinställningsmodul som använder SQLite-databasen. Se <a class=\"reference internal\" href=\"#running-unit-tests-settings\"><span class=\"std std-ref\">Använda en annan settings-modul</span></a> för att lära dig hur du använder en annan inställningsmodul för att köra testerna med en annan databas.</p>\n<p>Har du problem? Se <a class=\"reference internal\" href=\"#troubleshooting-unit-tests\"><span class=\"std std-ref\">Felsökning</span></a> för några vanliga problem.</p>\n</section>\n<section id=\"running-tests-using-tox\">\n<h3>Kör tester med hjälp av <code class=\"docutils literal notranslate\">tox</code><a class=\"heading-anchor\" href=\"#running-tests-using-tox\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference external\" href=\"https://tox.wiki/\">Tox</a> är ett verktyg för att köra tester i olika virtuella miljöer. Django innehåller en grundläggande <code class=\"docutils literal notranslate\">tox.ini</code> som automatiserar vissa kontroller som vår byggserver utför på pull-förfrågningar. För att köra enhetstesterna och andra kontroller (som <a class=\"reference internal\" href=\"/sv/5.2/internals/contributing/writing-code/coding-style/#coding-style-imports\"><span class=\"std std-ref\">import sorting</span></a>, <a class=\"reference internal\" href=\"/sv/5.2/internals/contributing/writing-documentation/#documentation-spelling-check\"><span class=\"std std-ref\">documentation spelling checker</span></a>, och <a class=\"reference internal\" href=\"/sv/5.2/internals/contributing/writing-code/coding-style/#coding-style-python\"><span class=\"std std-ref\">code formatting</span></a>), installera och kör kommandot <code class=\"docutils literal notranslate\">tox</code> från vilken plats som helst i Djangos källträd:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-1-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python -m pip install tox\n<span class=\"gp\">$ </span>tox\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-1-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -m pip install tox\n<span class=\"gp\">...\\&gt;</span> tox\n</code></pre></div></div></div>\n<p>By default, <code class=\"docutils literal notranslate\">tox</code> runs the test suite with the bundled test settings file for\nSQLite, <code class=\"docutils literal notranslate\">black</code>, <code class=\"docutils literal notranslate\">blacken-docs</code>, <code class=\"docutils literal notranslate\">flake8</code>, <code class=\"docutils literal notranslate\">isort</code>, <code class=\"docutils literal notranslate\">zizmor</code>, and the\ndocumentation spelling checker. In addition to the system dependencies noted\nelsewhere in this documentation, the command <code class=\"docutils literal notranslate\">python3</code> must be on your path\nand linked to the appropriate version of Python. A list of default environments\ncan be seen as follows:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-2-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>tox -l\n<span class=\"go\">py3</span>\n<span class=\"go\">black</span>\n<span class=\"go\">blacken-docs</span>\n<span class=\"go\">flake8&gt;=3.7.0</span>\n<span class=\"go\">docs</span>\n<span class=\"go\">isort&gt;=7.0.0</span>\n<span class=\"go\">zizmor&gt;=1.16.3</span>\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-2-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> tox -l\n<span class=\"go\">py3</span>\n<span class=\"go\">black</span>\n<span class=\"go\">blacken-docs</span>\n<span class=\"gp\">flake8&gt;</span>=3.7.0\n<span class=\"go\">docs</span>\n<span class=\"gp\">isort&gt;</span>=7.0.0\n<span class=\"gp\">zizmor&gt;</span>=1.16.3\n</code></pre></div></div></div>\n<section id=\"testing-other-python-versions-and-database-backends\">\n<h4>Testning av andra Python-versioner och databasbackends<a class=\"heading-anchor\" href=\"#testing-other-python-versions-and-database-backends\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Förutom standardmiljöerna stöder <code class=\"docutils literal notranslate\">tox</code> körning av enhetstester för andra versioner av Python och andra databasbackends. Eftersom Djangos testsvit inte innehåller en inställningsfil för andra databasbackends än SQLite, måste du dock <a class=\"reference internal\" href=\"#running-unit-tests-settings\"><span class=\"std std-ref\">skapa och tillhandahålla dina egna testinställningar</span></a>. Till exempel, för att köra testerna på Python 3.10 med hjälp av PostgreSQL:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-3-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>tox -e py310-postgres -- --settings<span class=\"o\">=</span>my_postgres_settings\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-3-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> tox -e py310-postgres -- --settings=my_postgres_settings\n</code></pre></div></div></div>\n<p>Detta kommando ställer in en virtuell Python 3.10-miljö, installerar Djangos testsvitberoenden (inklusive de för PostgreSQL) och anropar <code class=\"docutils literal notranslate\">runtests.py</code> med de medföljande argumenten (i det här fallet <code class=\"docutils literal notranslate\">--settings=my_postgres_settings</code>).</p>\n<p>I resten av denna dokumentation visas kommandon för att köra tester utan <code class=\"docutils literal notranslate\">tox</code>, men alla alternativ som skickas till <code class=\"docutils literal notranslate\">runtests.py</code> kan också skickas till <code class=\"docutils literal notranslate\">tox</code> genom att prefixera argumentlistan med <code class=\"docutils literal notranslate\">--</code>, enligt ovan.</p>\n<p><code class=\"docutils literal notranslate\">Tox</code> respekterar även miljövariabeln <span class=\"target\" id=\"index-6\"></span><a class=\"reference internal\" href=\"/sv/5.2/topics/settings/#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a>, om den är inställd. Följande är till exempel likvärdigt med kommandot ovan:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span><span class=\"nv\">DJANGO_SETTINGS_MODULE</span><span class=\"o\">=</span>my_postgres_settings tox -e py310-postgres\n</code></pre></div>\n<p>Windows-användare bör använda:</p>\n<div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows code\"><code><span class=\"gp\">...\\&gt;</span> <span class=\"k\">set</span> <span class=\"nv\">DJANGO_SETTINGS_MODULE</span><span class=\"p\">=</span>my_postgres_settings\n<span class=\"gp\">...\\&gt;</span> tox -e py310-postgres\n</code></pre></div>\n</section>\n<section id=\"running-the-javascript-tests\">\n<h4>Körning av JavaScript-testerna<a class=\"heading-anchor\" href=\"#running-the-javascript-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Django innehåller en uppsättning <a class=\"reference internal\" href=\"/sv/5.2/internals/contributing/writing-code/javascript/#javascript-tests\"><span class=\"std std-ref\">JavaScript-enhetstester</span></a> för funktioner i vissa Contrib-appar. JavaScript-testerna körs inte som standard med <code class=\"docutils literal notranslate\">tox</code> eftersom de kräver att <code class=\"docutils literal notranslate\">Node.js</code> installeras och inte är nödvändiga för de flesta korrigeringar. För att köra JavaScript-testerna med hjälp av <code class=\"docutils literal notranslate\">tox</code>:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-4-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>tox -e javascript\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-4-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> tox -e javascript\n</code></pre></div></div></div>\n<p>Detta kommando kör <code class=\"docutils literal notranslate\">npm install</code> för att säkerställa att testkraven är uppdaterade och kör sedan <code class=\"docutils literal notranslate\">npm test</code>.</p>\n</section>\n</section>\n<section id=\"running-tests-using-django-docker-box\">\n<h3>Kör tester med hjälp av <code class=\"docutils literal notranslate\">django-docker-box</code><a class=\"heading-anchor\" href=\"#running-tests-using-django-docker-box\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>med <a class=\"reference external\" href=\"https://github.com/django/django-docker-box/\">django-docker-box</a> kan du köra Djangos testsvit över alla databaser och pythonversioner som stöds. Se projektsidan <a class=\"reference external\" href=\"https://github.com/django/django-docker-box/\">django-docker-box</a> för installations- och användningsinstruktioner.</p>\n</section>\n<section id=\"using-another-settings-module\">\n<span id=\"running-unit-tests-settings\"></span><h3>Använda en annan <code class=\"docutils literal notranslate\">settings</code>-modul<a class=\"heading-anchor\" href=\"#using-another-settings-module\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Den medföljande inställningsmodulen (<code class=\"docutils literal notranslate\">tests/test_sqlite.py</code>) gör att du kan köra testsviten med SQLite. Om du vill köra testerna med en annan databas måste du definiera din egen inställningsfil. Vissa tester, t.ex. de för <code class=\"docutils literal notranslate\">contrib.postgres</code>, är specifika för en viss databasbackend och kommer att hoppas över om de körs med en annan backend. Vissa tester hoppas över eller förväntade misslyckanden på en viss databas backend (se <code class=\"docutils literal notranslate\">DatabaseFeatures.django_test_skips</code> och <code class=\"docutils literal notranslate\">DatabaseFeatures.django_test_expected_failures</code> på varje backend).</p>\n<p>Om du vill köra testerna med olika inställningar måste du se till att modulen finns på din <span class=\"target\" id=\"index-7\"></span><a class=\"reference external\" href=\"https://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATH\" title=\"(in Python v3.14)\"><code class=\"xref std std-envvar docutils literal notranslate\">PYTHONPATH</code></a> och skicka modulen med <code class=\"docutils literal notranslate\">--settings</code>.</p>\n<p>Inställningen <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-DATABASES\"><code class=\"xref std std-setting docutils literal notranslate\">DATABASES</code></a> i en modul för testinställningar måste definiera två databaser:</p>\n<ul class=\"simple\">\n<li><p>En <code class=\"docutils literal notranslate\">standard</code> databas. Denna databas bör använda den backend som du vill använda för primär testning.</p></li>\n<li><p>En databas med aliaset <code class=\"docutils literal notranslate\">other</code>. Databasen <code class=\"docutils literal notranslate\">other</code> används för att testa att frågor kan riktas till olika databaser. Den här databasen bör använda samma backend som <code class=\"docutils literal notranslate\">default</code> och den måste ha ett annat namn.</p></li>\n</ul>\n<p>Om du använder en backend som inte är SQLite måste du ange andra uppgifter för varje databas:</p>\n<ul class=\"simple\">\n<li><p>Alternativet <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-USER\"><code class=\"xref std std-setting docutils literal notranslate\">USER</code></a> måste ange ett befintligt användarkonto för databasen. Den användaren behöver behörighet att köra <code class=\"docutils literal notranslate\">CREATE DATABASE</code> så att testdatabasen kan skapas.</p></li>\n<li><p>Alternativet <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-PASSWORD\"><code class=\"xref std std-setting docutils literal notranslate\">PASSWORD</code></a> måste innehålla lösenordet för den <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-USER\"><code class=\"xref std std-setting docutils literal notranslate\">USER</code></a> som har angetts.</p></li>\n</ul>\n<p>Testdatabaser får sina namn genom att lägga till <code class=\"docutils literal notranslate\">test_</code> till värdet i inställningarna <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-NAME\"><code class=\"xref std std-setting docutils literal notranslate\">NAME</code></a> för de databaser som definieras i <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-DATABASES\"><code class=\"xref std std-setting docutils literal notranslate\">DATABASES</code></a>. Dessa testdatabaser raderas när testerna är avslutade.</p>\n<p>Du måste också se till att din databas använder UTF-8 som standardteckensats. Om din databasserver inte använder UTF-8 som standardteckensats måste du lägga till ett värde för <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-TEST_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\">CHARSET</code></a> i testinställningsordlistan för den aktuella databasen.</p>\n</section>\n<section id=\"running-only-some-of-the-tests\">\n<span id=\"runtests-specifying-labels\"></span><h3>Kör bara några av testerna<a class=\"heading-anchor\" href=\"#running-only-some-of-the-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Djangos hela testsvit tar en stund att köra, och att köra varje enskilt test kan vara överflödigt om du till exempel just har lagt till ett test i Django som du vill köra snabbt utan att köra allt annat. Du kan köra en delmängd av enhetstesterna genom att lägga till namnen på testmodulerna till <code class=\"docutils literal notranslate\">runtests.py</code> på kommandoraden.</p>\n<p>Om du t.ex. bara vill köra tester för generiska relationer och internationalisering, skriv:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-5-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py --settings<span class=\"o\">=</span>path.to.settings generic_relations i18n\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-5-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py --settings=path.to.settings generic_relations i18n\n</code></pre></div></div></div>\n<p>Hur får du reda på namnen på enskilda tester? Titta i <code class=\"docutils literal notranslate\">tests/</code> - varje katalognamn där är namnet på ett test.</p>\n<p>Om du bara vill köra en viss klass av tester kan du ange en lista med sökvägar till enskilda testklasser. Om du t.ex. vill köra <code class=\"docutils literal notranslate\">TranslationTests</code> för modulen <code class=\"docutils literal notranslate\">i18n</code> skriver du :</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-6-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py --settings<span class=\"o\">=</span>path.to.settings i18n.tests.TranslationTests\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-6-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py --settings=path.to.settings i18n.tests.TranslationTests\n</code></pre></div></div></div>\n<p>Utöver detta kan du ange en enskild testmetod på följande sätt:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-7-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py --settings<span class=\"o\">=</span>path.to.settings i18n.tests.TranslationTests.test_lazy_objects\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-7-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py --settings=path.to.settings i18n.tests.TranslationTests.test_lazy_objects\n</code></pre></div></div></div>\n<p>Du kan köra tester som startar vid en angiven modul på högsta nivån med alternativet <code class=\"docutils literal notranslate\">--start-at</code>. Till exempel</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-8-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py --start-at<span class=\"o\">=</span>wsgi\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-8-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py --start-at=wsgi\n</code></pre></div></div></div>\n<p>Du kan också köra tester som startar efter en angiven modul på högsta nivån med alternativet <code class=\"docutils literal notranslate\">--start-after</code>. Till exempel:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-9-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py --start-after<span class=\"o\">=</span>wsgi\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-9-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py --start-after=wsgi\n</code></pre></div></div></div>\n<p>Observera att alternativet <code class=\"docutils literal notranslate\">--reverse</code> inte har någon inverkan på alternativen <code class=\"docutils literal notranslate\">--start-at</code> eller <code class=\"docutils literal notranslate\">--start-after</code>. Dessutom kan dessa alternativ inte användas med testetiketter.</p>\n</section>\n<section id=\"running-the-selenium-tests\">\n<span id=\"running-selenium-tests\"></span><h3>Kör Selenium-testerna<a class=\"heading-anchor\" href=\"#running-the-selenium-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Vissa tester kräver Selenium och en webbläsare. För att köra dessa tester måste du installera paketet <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/selenium/\">selenium</a> och köra testerna med alternativet <code class=\"docutils literal notranslate\">--selenium=&lt;BROWSERS&gt;</code>. Till exempel om du har Firefox och Google Chrome installerade:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-10-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py --selenium<span class=\"o\">=</span>firefox,chrome\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-10-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py --selenium=firefox,chrome\n</code></pre></div></div></div>\n<p>Se paketet <a class=\"reference external\" href=\"https://github.com/SeleniumHQ/selenium/tree/trunk/py/selenium/webdriver\">selenium.webdriver</a> för en lista över tillgängliga webbläsare.</p>\n<p>Om du anger <code class=\"docutils literal notranslate\">--selenium</code> ställs <code class=\"docutils literal notranslate\">--tags=selenium</code> automatiskt in så att endast de tester som kräver selenium körs.</p>\n<p>Vissa webbläsare (t.ex. Chrome eller Firefox) stöder headless-testning, som kan vara snabbare och stabilare. Lägg till alternativet <code class=\"docutils literal notranslate\">--headless</code> för att aktivera detta läge.</p>\n<section id=\"screenshot-tests\">\n<span id=\"id1\"></span><h4>Skärmdump tester<a class=\"heading-anchor\" href=\"#screenshot-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För att testa ändringar i administratörsgränssnittet kan seleniumtesterna köras med alternativet <code class=\"docutils literal notranslate\">--screenshots</code> aktiverat. Skärmdumpar kommer att sparas i katalogen <code class=\"docutils literal notranslate\">tests/screenshots/</code>.</p>\n<p>För att definiera när skärmdumpar ska tas under ett seleniumtest måste testklassen använda dekoratorn <code class=\"docutils literal notranslate\">&#64;django.test.selenium.screenshot_cases</code> med en lista över skärmdumpstyper som stöds (<code class=\"docutils literal notranslate\">&quot;desktop_size&quot;</code>, <code class=\"docutils literal notranslate\">&quot;mobile_size&quot;</code>, <code class=\"docutils literal notranslate\">&quot;small_screen_size&quot;</code>, <code class=\"docutils literal notranslate\">&quot;rtl&quot;</code>, <code class=\"docutils literal notranslate\">&quot;dark&quot;</code> och <code class=\"docutils literal notranslate\">&quot;high_contrast&quot;</code>). Den kan sedan anropa <code class=\"docutils literal notranslate\">self.take_screenshot(&quot;unique-screenshot-name&quot;)</code> vid önskad punkt för att generera skärmdumparna. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.test.selenium</span> <span class=\"kn\">import</span> SeleniumTestCase<span class=\"p\">,</span> screenshot_cases\n<span class=\"kn\">from</span> <span class=\"nn\">django.urls</span> <span class=\"kn\">import</span> reverse\n\n\n<span class=\"k\">class</span> <span class=\"nc\">SeleniumTests</span><span class=\"p\">(</span>SeleniumTestCase<span class=\"p\">):</span>\n    <span class=\"nd\">@screenshot_cases</span><span class=\"p\">([</span><span class=\"s2\">&quot;desktop_size&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;mobile_size&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;rtl&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;dark&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;high_contrast&quot;</span><span class=\"p\">])</span>\n    <span class=\"k\">def</span> <span class=\"nf\">test_login_button_centered</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span>selenium<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span>live_server_url <span class=\"o\">+</span> reverse<span class=\"p\">(</span><span class=\"s2\">&quot;admin:login&quot;</span><span class=\"p\">))</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span>take_screenshot<span class=\"p\">(</span><span class=\"s2\">&quot;login&quot;</span><span class=\"p\">)</span>\n        <span class=\"o\">...</span>\n</code></pre></div>\n<p>Detta genererar flera skärmdumpar av inloggningssidan - en för en datorskärm, en för en mobilskärm, en för höger till vänster-språk på datorn, en för mörkt läge på datorn och en för högkontrastläge på datorn när du använder Chrome.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.1\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.1</p><p>Alternativet <code class=\"docutils literal notranslate\">--screenshots</code> och dekoratorn <code class=\"docutils literal notranslate\">&#64;screenshot_cases</code> har lagts till.</p>\n</aside>\n</section>\n</section>\n<section id=\"running-all-the-tests\">\n<span id=\"running-unit-tests-dependencies\"></span><h3>Kör alla tester<a class=\"heading-anchor\" href=\"#running-all-the-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Om du vill köra hela testsviten måste du installera ett antal beroenden:</p>\n<ul class=\"simple\">\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/aiosmtpd/\">aiosmtpd</a></p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/argon2-cffi/\">argon2-cffi</a> 19.2.0+</p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/asgiref/\">asgiref</a> 3.8.1+ (krävs)</p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/bcrypt/\">bcrypt</a></p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/colorama/\">colorama</a> 0.4.6+</p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/docutils/\">docutils</a> 0.19+</p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/geoip2/\">geoip2</a></p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/Jinja2/\">Jinja2</a> 2.11+</p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/numpy/\">numpy</a></p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/Pillow/\">Pillow</a> 6.2.1+</p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/PyYAML/\">PyYAML</a></p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/pywatchman/\">pywatchman</a></p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/redis/\">redis</a> 3.4+</p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/setuptools/\">setuptools</a></p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/pymemcache/\">pymemcache</a>, plus en <a class=\"reference external\" href=\"https://memcached.org/\">stödd Python-bindning</a></p></li>\n<li><p><a class=\"reference external\" href=\"https://www.gnu.org/software/gettext/manual/gettext.html\">gettext</a>\n(<a class=\"reference internal\" href=\"/sv/5.2/topics/i18n/translation/#gettext-on-windows\"><span class=\"std std-ref\">gettext på Windows</span></a>)</p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/selenium/\">selenium</a> 4.8.0+</p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/sqlparse/\">sqlparse</a> 0.3.1+ (krävs)</p></li>\n<li><p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/tblib/\">tblib</a> 1.5.0+</p></li>\n</ul>\n<p>Du kan hitta dessa beroenden i <a class=\"reference external\" href=\"https://pip.pypa.io/en/latest/user_guide/#requirements-files\">pip requirements files</a> i katalogen <code class=\"docutils literal notranslate\">tests/requirements</code> i Djangos källträd och installera dem på följande sätt:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-11-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python -m pip install -r tests/requirements/py3.txt\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-11-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -m pip install -r tests\\requirements\\py3.txt\n</code></pre></div></div></div>\n<p>Om du stöter på ett fel under installationen kan det hända att ditt system saknar ett beroende för ett eller flera av Python-paketen. Läs dokumentationen för det paket som inte fungerar eller sök på webben efter det felmeddelande som du stöter på.</p>\n<p>Du kan också installera valfri(a) databasadapter(s) med hjälp av <code class=\"docutils literal notranslate\">oracle.txt</code>, <code class=\"docutils literal notranslate\">mysql.txt</code> eller <code class=\"docutils literal notranslate\">postgres.txt</code>.</p>\n<p>Om du vill testa backends för memcached eller Redis cache måste du också definiera en <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-CACHES\"><code class=\"xref std std-setting docutils literal notranslate\">CACHES</code></a>-inställning som pekar på din memcached- respektive Redis-instans.</p>\n<p>För att köra GeoDjango-testerna måste du <a class=\"reference internal\" href=\"/sv/5.2/ref/contrib/gis/install/\"><span class=\"doc\">konfigurera en spatial databas och installera Geospatial-biblioteken</span></a>.</p>\n<p>Var och en av dessa beroenden är valfria. Om du saknar något av dem kommer de tillhörande testerna att hoppas över.</p>\n<p>För att köra några av de automatiska laddningstesterna måste du installera tjänsten <a class=\"reference external\" href=\"https://facebook.github.io/watchman/\">Watchman</a>.</p>\n</section>\n<section id=\"code-coverage\">\n<h3>Kodtäckning<a class=\"heading-anchor\" href=\"#code-coverage\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Bidragsgivare uppmuntras att köra täckning på testsviten för att identifiera områden som behöver ytterligare tester. Installation och användning av täckningsverktyget beskrivs i <a class=\"reference internal\" href=\"/sv/5.2/topics/testing/advanced/#topics-testing-code-coverage\"><span class=\"std std-ref\">testning code coverage</span></a>.</p>\n<p>För att köra täckning på Djangos testsvit med standardtestinställningarna:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-12-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>coverage run ./runtests.py --settings<span class=\"o\">=</span>test_sqlite\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-12-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> coverage run runtests.py --settings=test_sqlite\n</code></pre></div></div></div>\n<p>Efter att ha kört täckning, kombinera all täckningsstatistik genom att köra:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-13-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>coverage combine\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-13-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> coverage combine\n</code></pre></div></div></div>\n<p>Efter det genererar du html-rapporten genom att köra:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-14-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>coverage html\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-14-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> coverage html\n</code></pre></div></div></div>\n<p>När du kör täckning för Django-testerna definierar den medföljande inställningsfilen <code class=\"docutils literal notranslate\">.coveragerc</code> <code class=\"docutils literal notranslate\">coverage_html</code> som utdatakatalog för rapporten och utesluter även flera kataloger som inte är relevanta för resultaten (testkod eller extern kod som ingår i Django).</p>\n</section>\n</section>\n<section id=\"contrib-apps\">\n<span id=\"id2\"></span><h2>Bidragande appar<a class=\"heading-anchor\" href=\"#contrib-apps\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tester för Contrib-appar finns i katalogen <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/5.2.x/tests/\">tests/</a>, vanligtvis under <code class=\"docutils literal notranslate\">&lt;app_name&gt;_tests</code>. Till exempel finns tester för <code class=\"docutils literal notranslate\">contrib.auth</code> i <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/5.2.x/tests/auth_tests\">tests/auth_tests</a>.</p>\n</section>\n<section id=\"troubleshooting\">\n<span id=\"troubleshooting-unit-tests\"></span><h2>Felsökning<a class=\"heading-anchor\" href=\"#troubleshooting\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"test-suite-hangs-or-shows-failures-on-main-branch\">\n<h3>Testsviten hänger sig eller visar fel på <code class=\"docutils literal notranslate\">main</code>-grenen<a class=\"heading-anchor\" href=\"#test-suite-hangs-or-shows-failures-on-main-branch\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Se till att du har den senaste punktversionen av en <a class=\"reference internal\" href=\"/sv/5.2/faq/install/#faq-python-version-support\"><span class=\"std std-ref\">stödd Python-version</span></a>, eftersom det ofta finns buggar i tidigare versioner som kan leda till att testsviten misslyckas eller hänger sig.</p>\n<p>På <strong>macOS</strong> (High Sierra och nyare versioner) kan du se detta meddelande loggat, varefter testerna hänger sig:</p>\n<div class=\"code-block\" data-language=\"pytb\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Pytb</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Pytb code\"><code><span class=\"x\">objc[42074]: +[__NSPlaceholderDate initialize] may have been in progress in</span>\n<span class=\"x\">another thread when fork() was called.</span>\n</code></pre></div>\n<p>För att undvika detta kan du t.ex. ange miljövariabeln <code class=\"docutils literal notranslate\">OBJC_DISABLE_INITIALIZE_FORK_SAFETY</code>:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$ <span class=\"nv\">OBJC_DISABLE_INITIALIZE_FORK_SAFETY</span><span class=\"o\">=</span>YES ./runtests.py\n</code></pre></div>\n<p>Eller lägg till <code class=\"docutils literal notranslate\">export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES</code> i startfilen för ditt skal (t.ex. <code class=\"docutils literal notranslate\">~/.profile</code>).</p>\n</section>\n<section id=\"many-test-failures-with-unicodeencodeerror\">\n<h3>Många misslyckade tester med <code class=\"docutils literal notranslate\">UnicodeEncodeError</code><a class=\"heading-anchor\" href=\"#many-test-failures-with-unicodeencodeerror\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Om paketet <code class=\"docutils literal notranslate\">locales</code> inte är installerat kommer vissa tester att misslyckas med <code class=\"docutils literal notranslate\">UnicodeEncodeError</code>.</p>\n<p>Du kan lösa detta på Debian-baserade system genom att t.ex. köra:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>apt-get install locales\n<span class=\"gp\">$ </span>dpkg-reconfigure locales\n</code></pre></div>\n<p>Du kan lösa detta för macOS-system genom att konfigurera ditt shells locale:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span><span class=\"nb\">export</span> <span class=\"nv\">LANG</span><span class=\"o\">=</span><span class=\"s2\">&quot;en_US.UTF-8&quot;</span>\n<span class=\"gp\">$ </span><span class=\"nb\">export</span> <span class=\"nv\">LC_ALL</span><span class=\"o\">=</span><span class=\"s2\">&quot;en_US.UTF-8&quot;</span>\n</code></pre></div>\n<p>Kör kommandot <code class=\"docutils literal notranslate\">locale</code> för att bekräfta ändringen. Lägg eventuellt till dessa exportkommandon i startfilen för ditt skal (t.ex. <code class=\"docutils literal notranslate\">~/.bashrc</code> för Bash) så att du slipper skriva in dem igen.</p>\n</section>\n<section id=\"tests-that-only-fail-in-combination\">\n<h3>Tester som bara misslyckas i kombination<a class=\"heading-anchor\" href=\"#tests-that-only-fail-in-combination\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Om ett test godkänns när det körs isolerat men misslyckas i hela sviten har vi några verktyg som hjälper till att analysera problemet.</p>\n<p>Alternativet <code class=\"docutils literal notranslate\">--bisect</code> i <code class=\"docutils literal notranslate\">runtests.py</code> kör det misslyckade testet samtidigt som testuppsättningen som det körs tillsammans med halveras vid varje iteration, vilket ofta gör det möjligt att identifiera ett litet antal tester som kan vara relaterade till felet.</p>\n<p>Anta till exempel att det misslyckade testet som fungerar på egen hand är <code class=\"docutils literal notranslate\">ModelTest.test_eq</code>, då använder du:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-15-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py --bisect basic.tests.ModelTest.test_eq\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-15-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py --bisect basic.tests.ModelTest.test_eq\n</code></pre></div></div></div>\n<p>kommer att försöka hitta ett test som stör det givna testet. Först körs testet med den första halvan av testsviten. Om ett fel uppstår delas den första halvan av testsviten upp i två grupper och varje grupp körs sedan med det angivna testet. Om det inte uppstår något fel med den första halvan av testsviten körs den andra halvan av testsviten med det angivna testet och delas upp på lämpligt sätt enligt beskrivningen ovan. Processen upprepas tills antalet misslyckade tester har minimerats.</p>\n<p>Alternativet <code class=\"docutils literal notranslate\">--pair</code> kör det givna testet tillsammans med alla andra tester från sviten, så att du kan kontrollera om ett annat test har bieffekter som orsakar felet. Så här gör du:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-16-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py --pair basic.tests.ModelTest.test_eq\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-16-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py --pair basic.tests.ModelTest.test_eq\n</code></pre></div></div></div>\n<p>kommer att para ihop <code class=\"docutils literal notranslate\">test_eq</code> med varje testetikett.</p>\n<p>Med både <code class=\"docutils literal notranslate\">--bisect</code> och <code class=\"docutils literal notranslate\">--pair</code>, om du redan misstänker vilka fall som kan vara ansvariga för felet, kan du begränsa tester som ska korsanalyseras genom att <a class=\"reference internal\" href=\"#runtests-specifying-labels\"><span class=\"std std-ref\">specificera ytterligare testetiketter</span></a> efter den första:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-17-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py --pair basic.tests.ModelTest.test_eq queries transactions\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-17-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py --pair basic.tests.ModelTest.test_eq queries transactions\n</code></pre></div></div></div>\n<p>Du kan också prova att köra en uppsättning tester i slumpmässig eller omvänd ordning med hjälp av alternativen <code class=\"docutils literal notranslate\">--shuffle</code> och <code class=\"docutils literal notranslate\">--reverse</code>. Detta kan hjälpa till att verifiera att körning av tester i en annan ordning inte orsakar några problem:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-18-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py basic --shuffle\n<span class=\"gp\">$ </span>./runtests.py basic --reverse\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-18-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py basic --shuffle\n<span class=\"gp\">...\\&gt;</span> runtests.py basic --reverse\n</code></pre></div></div></div>\n</section>\n<section id=\"seeing-the-sql-queries-run-during-a-test\">\n<h3>Se de SQL-frågor som körs under ett test<a class=\"heading-anchor\" href=\"#seeing-the-sql-queries-run-during-a-test\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Om du vill undersöka den SQL som körs i misslyckade tester kan du aktivera <a class=\"reference internal\" href=\"/sv/5.2/ref/logging/#django-db-logger\"><span class=\"std std-ref\">SQL logging</span></a> med alternativet <code class=\"docutils literal notranslate\">--debug-sql</code>. Om du kombinerar detta med <code class=\"docutils literal notranslate\">--verbosity=2</code> kommer alla SQL-frågor att skrivas ut:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-19-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py basic --debug-sql\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-19-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py basic --debug-sql\n</code></pre></div></div></div>\n</section>\n<section id=\"seeing-the-full-traceback-of-a-test-failure\">\n<h3>Se den fullständiga spårningen av ett testfel<a class=\"heading-anchor\" href=\"#seeing-the-full-traceback-of-a-test-failure\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Som standard körs testerna parallellt med en process per kärna. När testerna körs parallellt kommer du dock bara att se en avkortad spårning för eventuella testfel. Du kan justera detta beteende med alternativet <code class=\"docutils literal notranslate\">--parallel</code>:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-20-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./runtests.py basic --parallel<span class=\"o\">=</span><span class=\"m\">1</span>\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-20-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> runtests.py basic --parallel=1\n</code></pre></div></div></div>\n<p>Du kan också använda miljövariabeln <span class=\"target\" id=\"index-8\"></span><a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#envvar-DJANGO_TEST_PROCESSES\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_TEST_PROCESSES</code></a> för detta ändamål.</p>\n</section>\n</section>\n<section id=\"tips-for-writing-tests\">\n<h2>Tips för att skriva tester<a class=\"heading-anchor\" href=\"#tips-for-writing-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"isolating-model-registration\">\n<h3>Isolering av modellregistrering<a class=\"heading-anchor\" href=\"#isolating-model-registration\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>För att undvika att förorena det globala <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#django.apps.apps\" title=\"django.apps.apps\"><code class=\"xref py py-attr docutils literal notranslate\">apps</code></a>-registret och förhindra onödigt skapande av tabeller, bör modeller som definieras i en testmetod vara bundna till en tillfällig <code class=\"docutils literal notranslate\">Apps</code>-instans. För att göra detta, använd <a class=\"reference internal\" href=\"/sv/5.2/topics/testing/tools/#django.test.utils.isolate_apps\" title=\"django.test.utils.isolate_apps\"><code class=\"xref py py-func docutils literal notranslate\">isolate_apps()</code></a> dekoratorn:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n<span class=\"kn\">from</span> <span class=\"nn\">django.test</span> <span class=\"kn\">import</span> SimpleTestCase\n<span class=\"kn\">from</span> <span class=\"nn\">django.test.utils</span> <span class=\"kn\">import</span> isolate_apps\n\n\n<span class=\"k\">class</span> <span class=\"nc\">TestModelDefinition</span><span class=\"p\">(</span>SimpleTestCase<span class=\"p\">):</span>\n    <span class=\"nd\">@isolate_apps</span><span class=\"p\">(</span><span class=\"s2\">&quot;app_label&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span> <span class=\"nf\">test_model_definition</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">class</span> <span class=\"nc\">TestModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n            <span class=\"k\">pass</span>\n\n        <span class=\"o\">...</span>\n</code></pre></div>\n<aside class=\"admonition-setting-app-label admonition\" role=\"note\">\n<p class=\"admonition-title\">Inställning av <code class=\"docutils literal notranslate\">app_label</code></p>\n<p>Modeller som definieras i en testmetod utan någon explicit <a class=\"reference internal\" href=\"/sv/5.2/ref/models/options/#django.db.models.Options.app_label\" title=\"django.db.models.Options.app_label\"><code class=\"xref py py-attr docutils literal notranslate\">app_label</code></a> tilldelas automatiskt etiketten för den app där deras testklass finns.</p>\n<p>För att säkerställa att de modeller som definieras inom ramen för <a class=\"reference internal\" href=\"/sv/5.2/topics/testing/tools/#django.test.utils.isolate_apps\" title=\"django.test.utils.isolate_apps\"><code class=\"xref py py-func docutils literal notranslate\">isolate_apps()</code></a>-instanser är korrekt installerade, bör du skicka uppsättningen av riktade <code class=\"docutils literal notranslate\">app_label</code> som argument:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">tester/app_label/tester.py</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n<span class=\"kn\">from</span> <span class=\"nn\">django.test</span> <span class=\"kn\">import</span> SimpleTestCase\n<span class=\"kn\">from</span> <span class=\"nn\">django.test.utils</span> <span class=\"kn\">import</span> isolate_apps\n\n\n<span class=\"k\">class</span> <span class=\"nc\">TestModelDefinition</span><span class=\"p\">(</span>SimpleTestCase<span class=\"p\">):</span>\n    <span class=\"nd\">@isolate_apps</span><span class=\"p\">(</span><span class=\"s2\">&quot;app_label&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;other_app_label&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span> <span class=\"nf\">test_model_definition</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"c1\"># This model automatically receives app_label=&#39;app_label&#39;</span>\n        <span class=\"k\">class</span> <span class=\"nc\">TestModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n            <span class=\"k\">pass</span>\n\n        <span class=\"k\">class</span> <span class=\"nc\">OtherAppModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n            <span class=\"k\">class</span> <span class=\"nc\">Meta</span><span class=\"p\">:</span>\n                app_label <span class=\"o\">=</span> <span class=\"s2\">&quot;other_app_label&quot;</span>\n\n        <span class=\"o\">...</span>\n</code></pre></figure>\n</aside>\n</section>\n</section>","rootId":"unit-tests","toc":[{"title":"Kör enhetstesterna","anchor":"running-the-unit-tests","children":[{"title":"Snabbstart","anchor":"quickstart","children":[]},{"title":"Kör tester med hjälp av tox","anchor":"running-tests-using-tox","children":[{"title":"Testning av andra Python-versioner och databasbackends","anchor":"testing-other-python-versions-and-database-backends","children":[]},{"title":"Körning av JavaScript-testerna","anchor":"running-the-javascript-tests","children":[]}]},{"title":"Kör tester med hjälp av django-docker-box","anchor":"running-tests-using-django-docker-box","children":[]},{"title":"Använda en annan settings-modul","anchor":"using-another-settings-module","children":[]},{"title":"Kör bara några av testerna","anchor":"running-only-some-of-the-tests","children":[]},{"title":"Kör Selenium-testerna","anchor":"running-the-selenium-tests","children":[{"title":"Skärmdump tester","anchor":"screenshot-tests","children":[]}]},{"title":"Kör alla tester","anchor":"running-all-the-tests","children":[]},{"title":"Kodtäckning","anchor":"code-coverage","children":[]}]},{"title":"Bidragande appar","anchor":"contrib-apps","children":[]},{"title":"Felsökning","anchor":"troubleshooting","children":[{"title":"Testsviten hänger sig eller visar fel på main-grenen","anchor":"test-suite-hangs-or-shows-failures-on-main-branch","children":[]},{"title":"Många misslyckade tester med UnicodeEncodeError","anchor":"many-test-failures-with-unicodeencodeerror","children":[]},{"title":"Tester som bara misslyckas i kombination","anchor":"tests-that-only-fail-in-combination","children":[]},{"title":"Se de SQL-frågor som körs under ett test","anchor":"seeing-the-sql-queries-run-during-a-test","children":[]},{"title":"Se den fullständiga spårningen av ett testfel","anchor":"seeing-the-full-traceback-of-a-test-failure","children":[]}]},{"title":"Tips för att skriva tester","anchor":"tips-for-writing-tests","children":[{"title":"Isolering av modellregistrering","anchor":"isolating-model-registration","children":[]}]}],"breadcrumbs":[{"docname":"internals/index","title":"Djangos interna funktioner","url":"/sv/5.2/internals/"},{"docname":"internals/contributing/index","title":"Att bidra till Django","url":"/sv/5.2/internals/contributing/"},{"docname":"internals/contributing/writing-code/index","title":"Bidra med kod","url":"/sv/5.2/internals/contributing/writing-code/"}],"prev":{"docname":"internals/contributing/writing-code/submitting-patches","title":"Inlämning av bidrag","url":"/sv/5.2/internals/contributing/writing-code/submitting-patches/"},"next":{"docname":"internals/contributing/writing-code/working-with-git","title":"Arbeta med Git och GitHub","url":"/sv/5.2/internals/contributing/writing-code/working-with-git/"},"formats":{"html":"/sv/5.2/internals/contributing/writing-code/unit-tests/","markdown":"/sv/5.2/internals/contributing/writing-code/unit-tests.md","json":"/sv/5.2/internals/contributing/writing-code/unit-tests.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/internals/contributing/writing-code/unit-tests.txt","official":"https://docs.djangoproject.com/sv/5.2/internals/contributing/writing-code/unit-tests/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}