我想獲得一些Django-CMS實現的測試覆蓋率,我不確定如何單元測試插件/擴展。有沒有人曾經這樣做過,如果是這樣,怎麼樣?一些例子會很棒。如何對Django-CMS擴展進行單元測試?
12
A
回答
2
如果我正確理解你的問題,可以在模塊cms/tests/plugins.py中找到插件單元測試的示例,該模塊位於保存django-cms安裝的文件夾中。
基本上,您可以繼承CMSTestCase並使用django.test.client的Client類向CMS發出請求並檢查生成的響應。
如何使用客戶端的信息可以在http://docs.djangoproject.com/en/dev/topics/testing/#module-django.test.client
4
測試發現如圖cms/tests/plugins.py
是相當集成測試比單元測試,這是相當沉重的重量,需要整個系統的有時過於很大一部分啓動和運行(不需要錯誤,只是在調試時不切實際)。
DjangoCMS緊密集成所以我這裏有幾個技巧來獲得「更接近金屬」,而不是一個完整的解決方案:
你需要一個「爲Expando」式的假類:
class Expando(object): # Never use in production!
def __init__(self, **kw):
self.__dict__.update(kw)
實例化插件類的一個實例:
from cms.plugin_pool import plugin_pool
# ..in production code: class YourPlugin(CMSPlugin)...
# This ensures that the system is aware of your plugin:
YrPluginCls = plugin_pool.plugins.get('YourPlugin', None)
# ..instantiate:
plugin = YrPluginCls()
完整性檢查插件.render
方法:
ctx = plugin.render({}, Expando(attr1='a1', attr2=123), None)
渲染與實際的模板,檢查輸出:
res = render_to_response(look.render_template, ctx)
# assert that attr1 exist in res if it should
# ..same for attr2
BeautifulSoup驗證的小DOM片段內容時更是得心應手。
使用admin表單字段來間接檢查模型的屬性表現正常:
from django.test.client import RequestFactory
from django.contrib.auth.models import AnonymousUser
# ...
request = RequestFactory().get('/')
request.user = AnonymousUser()
a_field = plugin.get_form(request).base_fields['a_field']
a_field.validate('<some valid value>')
# Check that a_field.validate('<some invalid value>') raises
相關問題
- 1. 如何對擴展的DAO進行單元測試SqlMapClientDaoSupport
- 2. 使用反應性擴展對事件進行單元測試
- 3. 如何單元測試角度擴展
- 4. 單元測試Chrome擴展?
- 5. 單元測試Joomla擴展
- 6. 如何對wxPython進行單元測試?
- 7. 如何對rxjs5進行單元測試?
- 8. 如何對Response.Redirect進行單元測試?
- 9. 如何對IDataErrorInfo進行單元測試?
- 10. 如何對Xtext進行單元測試
- 11. 如何對FileContentResult進行單元測試?
- 12. 單元測試WCF行爲擴展
- 13. 鉻擴展運行javascript單元測試
- 14. 如何使用System.Windows.Threading.Dispatcher對單元進行單元測試
- 15. CoreDispatcher與反應擴展單元測試
- 16. 單元測試UrlHelper擴展方法
- 17. 單元測試Firefox的擴展?
- 18. 如何進行單元測試App.OnStartup
- 19. Grails - 如何進行單元測試addTo *
- 20. 如何進行單元測試navigator.notification.alert
- 21. 我如何進行單元測試openWithCompletionHandler
- 22. OpenGL如何進行單元測試?
- 23. 如何進行單元測試?
- 24. IRepository如何進行單元測試?
- 25. 如何進行單元測試
- 26. Hadoop:如何進行單元測試FileSystem
- 27. 如何爲EXC_BAD_ACCESS進行單元測試?
- 28. 如何進行單元測試配置
- 29. 如何進行單元測試子類
- 30. 如何進行單元測試出錯
+1,我也有興趣在此。 – 2010-04-12 20:06:37