Python unittest. 如何检查方法是否已实现而不是继承的

2 投票
1 回答
1145 浏览
提问于 2025-04-18 05:25

我们小组正在做一个Python项目。我们想确保我们创建的一些类能够自己定义__repr____str__方法,而不是仅仅从对象或其他类那儿继承这些方法。我们该如何使用unittest库来测试这一点呢?

1 个回答

1

我们想确保我们创建的一些类能够自己定义 __repr____str__ 方法,而不是仅仅从对象或其他类继承这些方法。我们该如何用 unittest 库来测试这一点呢?

这不是单元测试,而是一种编码规范。

你应该测试的是这些类的 reprstr 表现是否符合你想要的输出。使用正则表达式或者示例文本是最简单的方法。要考虑正向和负向测试(也就是说,检查它是否符合你的期望,以及它是否与 Python 默认实现不同)。

更新:正如 @JonasWielicki 提到的,抽象方法是强制要求这些方法存在的一种编程方式。你可以查看这个链接了解更多信息:https://docs.python.org/2/library/abc.html#abc.abstractmethod。需要注意的是,这并不会强制每个层级都有自己的方法,但这样做其实并不理想。更好的做法是写一个足够通用的基础实现,只有在必要时才重写。

撰写回答