如何在 Python 中指定和强制执行接口规范?
让我们首先了解什么是接口规范。接口规范是模块的接口规范,由 C++ 和 Java 等编程语言提供。它描述了模块的方法和函数的原型。
abc 模块
abc 模块在 Python 2.6 中引入,用于定义抽象基类 (ABC)。使用 isinstance() 和 issubclass() 检查实例或类是否实现了特定的抽象基类。此外,collections.abc 模块定义了一组有用的 ABC,例如 Iterable、Container 和 MutableMapping。
collections 模块包含从 ABC 派生的类。collections.abc 子模块包含一些可以用来测试类或实例是否提供特定接口的 ABC。
通过 Python 中合适的测试规范可以获得接口规范的好处 -
测试套件
模块的良好测试套件既可以提供回归测试,也可以充当模块接口规范和示例集。许多 Python 模块可以作为脚本运行,以提供简单的自检。
存根模拟
即使是使用复杂外部接口的模块,也可以使用外部接口的简单“存根”模拟在隔离状态下进行测试。
使用 doctest 和 unittest 模块创建测试套件
可以使用 doctest 和 unittest 模块或第三方测试框架构建详尽的测试套件,以执行模块中的每一行代码。
doctest 模块搜索看起来像交互式 Python 会话的文本片段,然后执行这些会话以验证它们的工作方式与显示的完全一致。
unittest 模块支持测试自动化、共享测试的设置和关闭代码、将测试聚合到集合中以及测试与报告框架的独立性。
构建大型复杂应用程序
合适的测试规范可以帮助构建 Python 中的大型复杂应用程序,就像拥有接口规范一样。
测试驱动开发
编写测试套件非常有用,您可能希望设计您的代码使其易于测试。一种越来越流行的技术,测试驱动开发,要求您首先编写测试套件的一部分,然后再编写任何实际代码。
广告