django3t是一个Django模板测试工具,旨在帮助开发人员在涉及Django模板引擎的地方编写更好的测试。
django-3t的Python项目详细描述
Django 3吨
django3t是一个Django模板测试工具,旨在帮助开发人员在涉及Django模板引擎的地方编写更好的测试。在
使用Django 3T可以做的一些事情包括:
- 确保呈现特定的template、node或block
- 确保特定的template、node或block呈现特定次数
- 确保使用特定的上下文子集呈现特定的template
- 确保使用特定参数呈现特定的node
- 确保特定的template、node或block生成特定的内容或包含它
安装
pip install django-3t
用法
django3t使用watch_templatescontext管理器拦截模板和节点呈现。在
假设您的项目实现了以下名为homepage.html的模板:
^{pr2}$确保模板和模板标记正确呈现的测试大致如下所示:
fromdjango.contrib.authimportget_user_modelfromdjango.testimportClient# 1. Import the context managerfromd3t.watcherimportwatch_templatesUser=get_user_model()deftest_homepage():user=User.objects.get(username='Billy')client=Client()client.force_login(user)# 2. Wrap the code where the rendering happenswithwatch_templatesasrendered:client.get('/')# 3. Assert!assertrendered.template('homepage.html')assertrendered.node('say_hello').with_arguments(user)
第一个断言确保模板homepage.html已呈现,第二个断言确保模板标记say_hello已呈现,并且使用user作为参数完成。在
有关可用方法的全面列表,请检查API section。在
API
可以检查模板、节点或块是否已渲染,以及是否在特定条件下进行了渲染
模板API
检查是否已渲染
rendered.template('template-name.html')
检查它是否已使用特定的上下文子集呈现
rendered.template('template-name.html').with_context({'answer':42})
检查它是否已呈现并且输出包含特定的字符串
rendered.template('template-name.html').contains('content')
检查它是否已呈现,并且输出等于特定字符串
rendered.template('template-name.html').equals('full content')
节点API
检查是否已渲染
rendered.node('node_name')
检查它是否已使用特定参数呈现
rendered.node('node_name').with_arguments(42,type='answer')
检查它是否已呈现并且输出包含特定的字符串
rendered.node('node_name').contains('content')
检查它是否已呈现,并且输出等于特定字符串
rendered.node('node_name').equals('full content')
块API
检查是否已渲染
rendered.block('block-name')
检查它是否已呈现并且输出包含特定的字符串
rendered.block('block-name').contains('content')
检查它是否已呈现,并且输出等于特定字符串
rendered.block('block-name').equals('full content')
处理多LPE渲染
模板、节点或块可以呈现任意次数,Django 3T允许您控制此操作,从而支持not运算符和len、all和any内置函数:
检查模板/节点/块是否尚未渲染
notrendered.template('template-name.html')
检查模板/节点/块是否已渲染特定次数
len(rendered.node('node_name'))==3
检查所有模板/节点/块渲染是否在特定条件下进行
all(rendered.block('block-name').contains('content'))
检查是否有任何模板/节点/块渲染发生在特定条件下
any(rendered.template('template-name.html').equals('specific content'))
信号
模板渲染
d3t.signals.template_rendered
这将在呈现模板后立即发送。在
随此信号发送的参数:
- 在sender这个Template类。
- 在instance正在呈现的实际模板实例。
- 在context用于呈现模板的上下文。
- 在result生成的渲染输出。
节点渲染
d3t.signals.node_rendered
这将在渲染节点后立即发送。
随此信号发送的参数:
- 在sender这个Node类。
- 在instance正在渲染的实际节点实例。
- 在result生成的渲染输出。
- 项目
标签: