Estoy probando mi aplicación y me encuentro con un problema y no estoy seguro de por qué. Estoy cargando accesorios para mis pruebas y los accesorios tienen claves foráneas que dependen el uno del otro. Deben cargarse en un orden determinado o no funcionará.¿Las luminarias Django se cargan en un orden incorrecto durante la prueba?
Los accesorios Estoy cargando son:
["test_company_data", "test_rate_index", 'test_rate_description']
datos de la empresa es la primera. test_rate_index tiene una clave externa para la empresa, y test_rate_description tiene una clave externa para un modelo declarado en test_rate_index. (como un lado, diferentes pruebas necesitan accesorios diferentes por lo que no estoy empujando todo en uno)
Si utilizo el procedimiento estándar de django para cargar pruebas, las pruebas no se cargan en el orden correcto.
class TestPackages(test.TestCase): fixtures = ["test_company_data", "test_rate_index", "test_rate_description",]
me sale el mensaje
DoesNotExist: RateDescription matching query does not exist.
Pero si invierto el orden de mis accesorios (que no tiene sentido) funciona:
fixtures = ["test_rate_description", "test_company_data", "test_rate_index",]
Django's documentation establece que los accesorios se cargan en el orden están declarados, pero este no parece ser el caso.
Como solución alternativa, en lugar de utilizar de
call_command('loaddata', *fixtures, **{ 'verbosity': 0, 'commit': False, 'database': 'default' })
estoy usando una función diferente en el método de configuración que carga los accesorios de uno a la vez Django.
def load_fixtures(fixtures): for fixture in fixtures: call_command('loaddata', fixture, **{ 'verbosity': 0, 'commit': False, 'database': 'default' })
¿Hay algo que estoy haciendo mal o no entender que está causando mis accesorios no deben ser cargados en el orden correcto cuando se intenta utilizar el método estándar?
¿Puedes publicar cómo son los modelos de tus accesorios? –