如何在python中测试超类的顺序?

时间:2018-09-04 14:41:01

标签: python python-3.x unit-testing testing

提供以下代码:

class X(Mixin, Y):
    pass

如何编写单元测试以确保Mixin的超类声明中的Y类在X之前?

2 个答案:

答案 0 :(得分:2)

不要测试。除非您正在为Python实现本身编写测试。

验证Python解释程序是否按设计工作并非库测试套件的责任。读取代码时,Mixin出现在声明中的Y之前是不言而喻的,并且here记录了Python在多重继承中从左到右评估初始化器的事实。

注意:我不是说不应该测试此行为,只是这样的测试不需要用户代码重复。它应该包含在实现的测试套件中,例如here用于CPython。

答案 1 :(得分:1)

您可以解析X.mro()的输出,该输出返回 m 方法 r 解决方案 o rder,并确保{ {1}}在Mixin之前:

Y

但是,我不确定这不是实现细节,也不知道可以(或应该)多少子类顺序。如果您的代码依赖于此,则设计中可能存在错误。