unitarias unit tutorial test pruebas form example create python django unit-testing webtest

tutorial - Ejecute Python/Django Management Command desde un UnitTest/WebTest



pruebas unitarias django (1)

La documentación de Django sobre los comandos de administración podría ayudar, describe cómo llamarlos desde el código de Python.

Básicamente necesitas algo como esto:

from django.core import management management.call_command( ... )

Tenemos un montón de comandos en nuestro sitio de Django, algunos que son administrativos y otros que se ejecutan en trabajos cron que no puedo averiguar cómo probar. Se parecen mucho a esto:

# Saved in file /app/management/commands/some_command.py # Usage: python manage.py some_command from django.core.management.base import NoArgsCommand class Command(NoArgsCommand): def handle_noargs(self, **options): # Do something useful

Y tengo algunas pruebas, que se parecen a esto:

import unittest from django.test import TestCase from django_webtest import WebTest class SomeTest(WebTest): fixtures = [''testdata.json''] def setUp(self): self.open_in_browser = False # Set up some objects def test_registration(self): response = self.client.get(''/register/'') self.assertEqual(response.status_code, 200) form = self.app.get(''/register/'').forms[1] # Set up the form response = form.submit() self.assertContains(response, ''You are Registered.'') if self.open_in_browser: response.showbrowser() # Here I''d like to run some_command to see the how it affects my new user.

En mi prueba (donde tengo el comentario) me gustaría ejecutar mi NoArgsCommand para ver qué pasa con mi nuevo usuario. No puedo encontrar ninguna documentación o ejemplos sobre cómo lograr esto. También tenga en cuenta que mi entorno de prueba es una base de datos SQLlite que creo desde cero en la memoria, que cargue algunos dispositivos y objetos y que ejecuto mis pruebas, por lo que me gustaría configurar los datos en una base de datos real, luego simplemente ejecute mi comando desde la línea de comandos, no puedo, es demasiado lento. Cualquier idea sería apreciada grandemente