hammett是一个快速的python测试运行者

hammett的Python项目详细描述


https://travis-ci.org/boxed/hammett.svg?branch=masterhttps://codecov.io/gh/boxed/hammett/branch/master/graph/badge.svg

Hammett是一个快速的python测试运行器,旨在与部件兼容 大多数人使用pytest(除非这与快速的目标相冲突)。 它还添加了一些特性,可以显著改善您的测试体验 如果你更充分地适应哈米特。在

哈米特快多少?在

这将取决于测试套件的速度。 哈米特不是魔术,它只是一个跑步者谁关心 表演很多。它的目标是最小的启动开销和最小的 每个测试的开销。我写了一些基准来衡量这一点 您可以在https://github.com/boxed/test-benchmarks(TL;DR 如果您的测试套件在pytest中是<;1s,那么您将看到巨大的改进,如果 几分钟或几小时,不算太多)。在

一个真实的例子是运行三、陈述性公司名称:

  • pytest:~ 860毫秒
  • 哈米特:~160毫秒

或iommi:

  • pytest:~10秒
  • 哈米特:~8秒

但即使你的测试套件又大又慢,你仍然可以得到一些大的 如果您经常只运行一个文件或一个测试,hammett的改进:

在iommi中,运行-k test_render_attrs_none

  • pytest:~1.3秒
  • 哈米特:~0.6秒

所有这些都是从一个完整和干净的运行。哈米特有避免这种情况的特征!在

锁定到模块的测试

在hammett中,您可以选择将您的测试文件命名为模块__测试.py(即 两个。这告诉hammett,如果更改模块,则只有 模块__测试.py需要运行。你可以把这些文件放在 tests目录或您正在测试的模块旁边。在

只运行相关的测试

Hammett跟踪哪些模块和哪些测试已更改并只运行 它需要的测试。假设您将您的测试锁定到上面这样的模块。在

如果hammett感到困惑,您可以删除.hammett db文件,它将 从头开始。在

在hammett中工作的Pytest功能

  • <引用>pytest.mark
  • 参数化测试
  • 固定装置
  • 与pytest.提升

有些插件可以工作,但是必须指定要加载它们设置.cfg公司名称:

[hammett]plugins=
    pytest_django

使用

第一次安装:pip install hammett

然后运行hammett:python -m hammett

希望它能运行你的整个测试套件!在

Hammett使用一些pytest插件,最著名的是pytest-django 对于一些项目。您需要指定hammett手动加载的插件 在设置.cfg不过。在

保持pytest兼容性

如果您想使用模块的hammett特定功能__测试.py-风格 测试文件,您仍然可以通过指定 项目的模块和测试文件模式,如下所示:

^{pr2}$

当然还要继续导入pytest而不是hammett。在

许可证

BSD公司

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

推荐PyPI第三方库


热门话题
具有未知数量条件的java If语句   java如何在Spark中使用两个“条件”进行过滤?   雅加达ee为ColdFusion提供的最佳Java ee服务器   java如何在jersey的MessageBodyWriter方法中获取writeTo中的anotations值?   java从脚本文件调用jar文件中的函数   java在执行insert语句后,如何获得id值为的语句?   在OS X上设置OpenCV Java绑定   java使用for循环遍历数组x。以字符串形式返回x的元素,其中每个元素由一个空格分隔   ApacheiClientBuilder为Algolia Java创建的APIClient是线程安全的吗?   java在DFS/BFS算法中获取邻居时避免内存分配?   java使用AES/CBC/PKCS5P加密大文件(2GB)   允许保存/加载列布局的Java DB网格组件   队列大小为1的java Spring调度   跑步带有Java参数的exe   java正则表达式将所有“<”和“>”标记替换为“&lt;”及“&gt;”在<<![CDATA]>标签?   java何时同步变量?