django3t是一个Django模板测试工具,旨在帮助开发人员在涉及Django模板引擎的地方编写更好的测试。

django-3t的Python项目详细描述


PyPI VersionTravis BuildCode CoverageLicense

Django 3吨

django3t是一个Django模板测试工具,旨在帮助开发人员在涉及Django模板引擎的地方编写更好的测试。在

使用Django 3T可以做的一些事情包括:

  • 确保呈现特定的templatenodeblock
  • 确保特定的templatenodeblock呈现特定次数
  • 确保使用特定的上下文子集呈现特定的template
  • 确保使用特定参数呈现特定的node
  • 确保特定的templatenodeblock生成特定的内容或包含它

安装

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运算符和lenallany内置函数:

检查模板/节点/块是否尚未渲染

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
    生成的渲染输出。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java收回EhCache中的所有元素   java创建带有箭头的组合框,以在其中增加值   在Java中使用JsonPath解析JSON中的数组   java如何在应用程序类不可见的模块中获取上下文?   exoplayer中的java Recyclerview不起作用   java MS Access无法打开更多表   从xmlschema到java的unicode拉丁脚本子集的正则表达式   在spring sts模型中,java时间戳格式必须为yyyymmdd hh:mm:ss   java将XPath转换为Jsoup的CssSelector   java Solr运算符类似于SQL中的类反向运算符   java使第三方类不可变   java跳过自定义卡片堆栈视图的动画   java如何修复“使用Spring AOP,我想更改返回值,但返回类不是我的返回方法”   java使用正则表达式解析字符串   java泛型与遗留代码的兼容性为什么foreach在运行时失败,而迭代器工作正常   hibernate如何使用java持久性重试锁定等待超时?