验证所有实现/类实现的接口合约
项目描述
简介
如果你的类没有正确实现接口,声明接口有什么用呢?
当然,你应该在测试中验证这一点,但如果你不想编写测试来检查所有代码是否真正实现了承诺的接口,请使用此包。
这是一个简单的补丁,它在你声明实现接口后调用 zope.interface.verify.verifyClass,并打印BrokenImplementation或BrokenMethodImplementation作为警告(如果有)。
在测试运行器中的简单示例
默认情况下,egg为所有包中的 zope.interface.implements 和 zope.interface.classImplements 启用接口合约验证
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = ... test ... ... [test] ... recipe = zc.recipe.testrunner ... eggs = affinitic.verifyinterface ... zope.exceptions ... defaults = ['-m', 'module'] ... """) >>> print system(buildout) Installing test. ... >>> from os.path import join >>> print system(join('bin', 'test')), <class 'affinitic.verifyinterface.tests.test_module1.Foo'> failed implementing <InterfaceClass affinitic.verifyinterface.tests.test_module1.IFoo>: An object has failed to implement interface <InterfaceClass affinitic.verifyinterface.tests.test_module1.IFoo> <BLANKLINE> The bla attribute was not provided. <BLANKLINE> <class 'affinitic.verifyinterface.tests.test_module2.Bar'> failed implementing <InterfaceClass affinitic.verifyinterface.tests.test_module2.IBar>: An object has failed to implement interface <InterfaceClass affinitic.verifyinterface.tests.test_module2.IBar> <BLANKLINE> The bla attribute was not provided. <BLANKLINE> Running zope.testing.testrunner.layer.UnitTests tests: Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds. Ran 2 tests with 0 failures and 0 errors in 0.000 seconds. Tearing down left over layers: Tear down zope.testing.testrunner.layer.UnitTests in 0.000 seconds.
限制验证
但你可以限制需要执行此验证的包(有时你不在乎你依赖的包是否正确实现了接口)。
这通过添加环境变量 verifyinterface 来完成,其中指定了你要验证接口的包/模块(通常用n分隔)。
以下是一个简单示例,我只希望对模块1使用的接口的错误实现发出警告
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = ... test ... ... [test] ... recipe = zc.recipe.testrunner ... eggs = affinitic.verifyinterface ... zope.exceptions ... defaults = ['-m', 'module'] ... environment = testenv ... ... [testenv] ... verifyinterface = affinitic.verifyinterface.tests.test_module1 ... """) >>> print system(buildout) Uninstalling test. Installing test. ... >>> from os.path import join >>> print system(join('bin', 'test')) <class 'affinitic.verifyinterface.tests.test_module1.Foo'> failed implementing <InterfaceClass affinitic.verifyinterface.tests.test_module1.IFoo>: An object has failed to implement interface <InterfaceClass affinitic.verifyinterface.tests.test_module1.IFoo> <BLANKLINE> The bla attribute was not provided. <BLANKLINE> Running zope.testing.testrunner.layer.UnitTests tests: Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds. Ran 2 tests with 0 failures and 0 errors in 0.000 seconds. Tearing down left over layers: Tear down zope.testing.testrunner.layer.UnitTests in 0.000 seconds.
变更日志
0.1 (2009-12-18)
首次发布
项目详情
关闭
affinitic.verifyinterface-0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 314df53c28fe2b7f4d2610508b0154239021956d580b69466ca1769b578b6e02 |
|
MD5 | 484e82a7e2774ad0cbdf146845311d08 |
|
BLAKE2b-256 | 9639f7ca7bd412e7430f634c2f44d6c836fc8ad7cd07251d95f12e3715008bd4 |