He estado aprendiendo Django durante las últimas semanas e intenté usar los accesorios de parametrización y las funciones de prueba y, por lo que entendí, simplemente puedo ejecutar varias pruebas a la vez. Con la prueba parametrizada estoy tratando de probar funciones, que se encuentran en todos los modelos. Leí la documentación, pero lamentablemente, tan pronto como lo probé, recibí el siguiente mensaje de error Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it. . Leí sobre el error y las posibles soluciones y lo que encontré fue crear un accesorio de uso automático y ponerlo en conftest.py :
import pytest @pytest.fixture(autouse=True) def enable_db_access_for_all_tests(db): passLamentablemente, este cambio no hizo ninguna diferencia y recibí exactamente el mismo error después de ejecutar la prueba. También intenté usar la marca django_db para otorgar acceso de prueba a la base de datos, pero tampoco pareció funcionar.
Me tomó un tiempo darme cuenta, pero lo anterior ESTABA "funcionando". Si miras de cerca el error, cambió. Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it. todavía está allí, incorrectamente, pero también, para mí de todos modos, estaba ejecutando migraciones, lo que no quería que hiciera, y estaba fallando en alguna migración de datos anterior. Agregar --nomigrations al comando resolvió el problema para mí.
Cree un decorador @pytest.mark.django_db sobre la función en cuestión o también puede usar @pytest.mark.django_db(transaction=True), esto ayuda a pytest a decirle a Django que la función en cuestión requerirá acceso a la base de datos.