我想获得一些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. 如何对wxPython进行单元测试?
- 6. 如何对IDataErrorInfo进行单元测试?
- 7. 如何对rxjs5进行单元测试?
- 8. 铬扩展运行javascript单元测试
- 9. 如何使用System.Windows.Threading.Dispatcher对单元进行单元测试
- 10. 单元测试UrlHelper扩展方法
- 11. 单元测试Firefox的扩展?
- 12. CoreDispatcher与反应扩展单元测试
- 13. 我如何进行单元测试openWithCompletionHandler
- 14. 如何进行单元测试出错
- 15. OpenGL如何进行单元测试?
- 16. 如何进行单元测试
- 17. Grails - 如何进行单元测试addTo *
- 18. Hadoop:如何进行单元测试FileSystem
- 19. IRepository如何进行单元测试?
- 20. 如何进行单元测试?
- 21. 如何进行单元测试配置
- 22. 对Bamboo进行Silverlight单元测试
- 23. 如何对子进程进行单元测试.CalledProcessError
- 24. 如何对二进制方法进行单元测试?
- 25. Ng-click - 如何对行为进行单元测试
- 26. 如何对与系统(或Android)类进行交互的单元测试方法进行单元测试
- 27. 如何对单元测试Xamarin.Forms行为
- 28. 如何测试Chrome扩展?
- 29. 如何使用coverage(在PyCharm中)单元测试sphinxdoc扩展?
- 30. 如何以单元测试调用html.EditorFor的扩展方法
+1,我也有兴趣在此。 – 2010-04-12 20:06:37