我目前正在運行一些Django測試,默認情況下它看起來是DEBUG=False
。有沒有辦法運行一個特定的測試,我可以在命令行或代碼中設置DEBUG=True
?運行Django測試時,如何將DEBUG設置爲True?
回答
運行單元測試時,你看不到的DEBUG=True
結果。頁面不顯示任何地方。沒有瀏覽器。
更改DEBUG
沒有任何影響,因爲網頁(與調試輸出)是不可見的任何地方。
如果你想看到相關的失敗的單元測試調試網頁,然後做到這一點。
刪除您的開發數據庫。
重新運行
syncdb
建立一個空的開發數據庫。運行各種
loaddata
腳本重建燈具在開發數據庫測試。運行服務器並瀏覽頁面。
現在您可以看到調試輸出。
我意識到這是一個較舊的帖子,但想要'DEBUG = True'的一個很好的理由是看到來自tastypie REST API的消息,只有'DEBUG = True'和'TASTYPIE_FULL_DEBUG = True'時才顯示。 – Tim
另外,當使用硒時,您確實顯示了網頁。有人可能希望看到實際的錯誤消息,如果在構建測試時某些工作不正確。 –
設置DEBUG = True還允許您從''django.db.connection.queries''輸出生成的SQL,這可以有助於制定測試以涵蓋奇怪的邊界情況。 –
對於測試用例中一個特定的測試,你可以使用override_settings裝飾:
from django.test.utils import override_settings
from django.conf import settings
class TestSomething(TestCase):
@override_settings(DEBUG=True)
def test_debug(self):
assert settings.DEBUG
接受的答案並沒有爲我工作。我使用Selenium進行測試,並且設置會使測試瀏覽器始終在每個頁面上顯示404
錯誤。並且DEBUG=False
不顯示異常回溯。所以我找到了一個解決方法。
這個想法是模仿DEBUG=True
行爲,使用自定義500
處理程序和內置的django 500
錯誤處理程序。
一下添加到myapp.views:
import sys from django import http from django.views.debug import ExceptionReporter def show_server_error(request): """ 500 error handler to show Django default 500 template with nice error information and traceback. Useful in testing, if you can't set DEBUG=True. Templates: `500.html` Context: sys.exc_info() results """ exc_type, exc_value, exc_traceback = sys.exc_info() error = ExceptionReporter(request, exc_type, exc_value, exc_traceback) return http.HttpResponseServerError(error.get_traceback_html())
urls.py:
from django.conf import settings if settings.TESTING_MODE: # enable this handler only for testing, # so that if DEBUG=False and we're not testing, # the default handler is used handler500 = 'myapp.views.show_server_error'
settings.py:
# detect testing mode import sys TESTING_MODE = 'test' in sys.argv
現在,如果您的Selenium測試中有任何一個測試遇到500錯誤,您將看到一個帶有回溯和一切的好錯誤頁面。如果運行正常的非測試環境,則使用默認的500處理程序。
靈感來自:
Starting with Django 1.11可以使用--debug-mode
的DEBUG設置爲True設置運行測試之前。
好吧,讓我們說,我想要寫錯誤測試用例的測試針對的網址是: -
urls.py
if settings.DEBUG:
urlpatterns += [
url(r'^404/$', page_not_found_view),
url(r'^500/$', my_custom_error_view),
url(r'^400/$', bad_request_view),
url(r'^403/$', permission_denied_view),
]
test_urls.py: -
from django.conf import settings
class ErroCodeUrl(TestCase):
def setUp(self):
settings.DEBUG = True
def test_400_error(self):
response = self.client.get('/400/')
self.assertEqual(response.status_code, 500)
希望你有一些想法!
- 1. 如何在運行JEST測試用例時將全局變量設置爲true
- 2. 如何在Django中使代碼在調試設置爲true時運行
- 3. IsHandledCreated設置爲false,但在運行時將其設置爲true?
- 4. DEBUG = True Django
- 5. 如何在運行時設置java.net.preferIPv4Stack = true?
- 6. 運行時錯誤設置爲true
- 7. 爲RSpec測試設置存在爲true
- 8. 在運行測試時強制將navigator.online設置爲false
- 9. 如何設置每次服務運行時WCF測試客戶端將運行
- 10. 如何從命令行將調試信息設置爲True
- 11. 運行測試時不會加載Django設置
- 12. 運行測試時設置環境
- 13. 在TeamCity上運行測試時,爲什麼UnitTestOutcome設置爲Unknown?
- 14. 將超時設置爲Qt測試
- 15. 如何僅在夜間設置參數時運行測試?
- 16. 如何通過Jenkins運行phpunit測試時設置$ _SERVER ['']變量
- 17. 量角器 - 如何在運行測試時設置chrome:// flags/
- 18. 如何在Django Admin中將user.is_staff默認設置爲True?
- 19. 如何設置teamcity爲每個構建運行android測試
- 20. Android Espresso - 如何爲所有測試只運行一次設置
- 21. 如何爲Resharper或TeamCity測試運行器設置TraceOutputOptions
- 22. 如何在運行時使用測試ng來設置測試用例名稱?
- 23. 如何覆蓋運行django-admin.py測試?
- 24. 如何運行django測試用例?
- 25. 如何在Heroku上運行Django測試
- 26. 如何將Type.IsGenericTypeDefinition設置爲true?
- 27. StAX - 如何將XMLInputFactory.IS_VALIDATING設置爲true?
- 28. 如何將AIRPLANE_MODE_ON設置爲「True」或ON?
- 29. 如何從bin \ debug目錄在VS 2015中運行Ordered測試?
- 30. 如何設置Maven在運行測試時覆蓋另一個設置文件?
根據https://docs.djangoproject.com/en/1.3/topics/testing/#other-test-conditions,測試集「DEBUG = False」。我正在尋找一種方法來繞過這一點。即使我在'settings.py'中傳遞'DEBUG = True',它將在運行測試時恢復爲'False'。 –
沒關係,我可以在'setUp'下設置'settings.DEBUG = True' –