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