當我運行./manage.py test
的測試時,無論我通過print
發送到標準輸出,都不顯示。當測試失敗時,我會在每次失敗測試中看到一個「stdout」塊,所以我猜Django會將其陷入陷阱(但在測試通過時不會顯示它)。如何在運行Django測試時看到stdout?
回答
檢查TEST_RUNNER
在settings.py
,它使用一個項目特定的跑步者呼叫鼻子。 鼻子有-s
選項從捕獲stdout
阻止它,但如果我運行:
./manage.py test -s
manage.py
第一捕獲它並拋出一個「沒有這樣的選擇」的錯誤。爲manage.py
幫助並沒有提到這一點,但我發現,如果我跑:
./manage.py test -- -s
它忽略了-s
,讓我捕捉到它的可定製的運行的身邊,將它傳遞給鼻子沒有問題。
因爲我正在使用contrib.sites框架,所以我爲我的測試指定了--settings。當我這樣做時,-s標誌函數按預期運行,並在另一個函數中傳遞 - 在-s拋出一個OSError(沒有這樣的文件)之前。 – ken 2011-12-19 18:21:55
只是爲了記錄。如果您在INSTALLED_APPS __after__ django_nose中安裝了django_south,它不會讓您給出鼻子選項(如-s)。你需要在INSTALLED_APPS中放置__before__ django_nose。這是我的問題 – yakxxx 2012-10-04 21:29:40
奇怪的是,這似乎對'print(...)'有效,但是使用'pprint打印輸出。pprint(...)'不顯示在控制檯中。 – 2016-05-12 00:21:00
是的,這個問題是由NoseTestSuiteRunner
造成的。添加-- -s
是一個棘手但不是最好的解決方案。 嘗試在settings.py
添加如下行:
NOSE_ARGS = ['--nocapture',
'--nologcapture',]
這解決了我的問題。
這是正確的答案。 ' - -s'方法引起不希望的副作用。 – adam 2014-09-23 17:47:50
使用當前版本的所有相關軟件包(Django==1.11.2
,django-nose==1.4.5
和nose==1.3.7
),在運行測試時添加--nocapture
標誌就足夠了。因此,一個簡單的
./manage.py test --nocapture
就足夠了。
誠然,當然,你有
TEST_RUNNER = "django_nose.NoseTestSuiteRunner"
在settings.py
- 1. PyCharm Django的測試運行器無法看到django.sites(運行時錯誤)
- 2. Django測試數據庫在測試運行時看起來爲空
- 3. NoReverseMatch錯誤在Django運行測試時
- 4. 如何運行django測試用例?
- 5. 如何覆蓋運行django-admin.py測試?
- 6. 在PyCharm中運行bash腳本時看到stdout
- 7. 如何測試stdin和stdout?
- 8. 如何在並行運行測試時管理測試數據
- 9. Django/unittest在測試運行結束時運行命令
- 10. Django停止運行測試
- 11. 如何在運行Test :: Unit測試時看到實際發生的情況?
- 12. 從maven運行測試時,如何查看IntelliJ IDEA「Test Runner Tab」?
- 13. 如何知道什麼時候用django-nose運行測試
- 14. 如何在運行AB測試時使用Selenium處理測試?
- 15. 如何在Django中並行運行測試?
- 16. 如何在使用test_windmill進行Django時在風車中運行Javascript測試?
- 17. 當Jenkins運行測試時,無法看到硒測試正在瀏覽器上運行
- 18. 如何在運行rspec時將Rails.logger打印到控制檯/ stdout?
- 19. 運行特定測試用例在Django
- 20. 在內存中運行Django MySQL測試
- 21. 如何同時運行NUnit測試?
- 22. Phoenix測試套件在運行測試時找不到列
- 23. 如何在測試時查看通知?
- 24. nosetests如何找到測試運行?
- 25. 如何僅在內存中運行Django的測試數據庫?
- 26. 在運行django測試時在南遷移之前運行db語句
- 27. 如何從運行測試
- 28. 如何運行測試maven?
- 29. 如何運行測試
- 30. 如何在Python中運行unittest時臨時隱藏stdout或stderr
加上'-s'選項 – 2013-02-27 00:01:39
你應該標記您自己的答案是正確的,因爲它是。 – Catskul 2014-08-19 15:41:34