一个简单的类似于RSpec的测试框架。
项目描述
ivoire 是一个 Python 的类似于 RSpec 的测试框架。它旨在以不会过于破坏性或不合常规的方式将一些小型构造引入 Python。
如果您从未听说过 RSpec,它是一个 Ruby BDD 框架,被广泛使用,其测试风格与 xUnit 不同。
安装
Ivoire 在 PyPI 上,可以通过 pip install ivoire (或通过您首选的安装方法) 安装。
在此阶段,您应将 Ivoire 视为实验性的,并且可能存在许多待解决的问题,因此请在遇到问题时在 问题跟踪器 上提交它们。
一个小例子
要使用 Ivoire 编写规范,请简单导入并使用 ivoire.describe。然后,您可以使用包含的 ivoire 测试运行器执行规范。
以下是一个规范的外观示例。
from ivoire import describe, context
class Calculator(object):
def add(self, x, y):
return x + y
def divide(self, x, y):
return x / y
with describe(Calculator) as it:
@it.before
def before(test):
test.calc = Calculator()
with it("adds two numbers") as test:
test.assertEqual(test.calc.add(2, 4), 6)
with it("multiplies two numbers") as test:
test.assertEqual(test.calc.multiply(2, 3), 6)
with context(Calculator.divide):
with it("divides two numbers") as test:
test.assertEqual(test.calc.divide(8, 4), 2)
with it("doesn't divide by zero") as test:
with test.assertRaises(ZeroDivisionError):
test.calc.divide(8, 0)
您可以在 examples/calculator_spec.py 中找到此示例,以及一些其他示例。
安装 Ivoire 后,使用 ivoire examples/calculator_spec.py 运行上面的示例应该会生成
如果您想要更详细的输出,请尝试传递 -v 命令行标志。
在某个时候(希望很快),当我已经整理好导入钩子后,Ivoire 也将能够通过以下命令运行:ivoire transform `which nosetests` --testmatch='(?:^|[\b_\./-])[Ss]pec',这将自动将规格转换为正常的 unittest.TestCase。相关工作正在进行中。
运行测试套件
Ivoire 的测试套件目前主要使用自身编写,但仍有一小部分是使用标准 unittest 测试用例编写的。
您可以通过在安装 tox(通过包管理器或使用 pip install tox)后,在仓库检出根目录下运行 tox 来运行 Ivoire 的测试套件。这将运行套件的所有部分。
贡献
我是 Julian Berman。
如果您想聊天,可以在 Freenode 的 #python-testing 以及其他多个频道(昵称:tos9)找到我。
Ivoire 在 GitHub 上开发。
请随意fork并提交补丁或功能请求。您的贡献非常受欢迎!
如果您希望它们能快速合并,请在 pull request 中包含测试,并遵循一般的 Python 编码标准和自己的常识 :).
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分发
构建分发
ivoire-0.4.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 88d516595d2740a8f53b1bfed9ff27cce2d59b30f575d1f0a0f5e0801e8c8ff9 |
|
MD5 | 96b941774bd078fdc90e406677d22dc6 |
|
BLAKE2b-256 | badf69f0c63af63511b4e23705d83d8880828ac5951e81c934aae39c3d113d75 |
ivoire-0.4.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b34cabcefcc50b7ae36567a4e23a2a4cd05b42110f0649c97f6ae690d699ec98 |
|
MD5 | 33a13caff86f6f23295e6aa66a1da728 |
|
BLAKE2b-256 | 70ee7434f10d535f3c8c163ad6a1bb7b3c4e38b52fdb15d204ad26c3d2cdab24 |