提供以下代码:
class X(Mixin, Y):
pass
如何编写单元测试以确保Mixin
的超类声明中的Y
类在X
之前?
答案 0 :(得分:2)
不要测试。除非您正在为Python实现本身编写测试。
验证Python解释程序是否按设计工作并非库测试套件的责任。读取代码时,Mixin
出现在声明中的Y
之前是不言而喻的,并且here记录了Python在多重继承中从左到右评估初始化器的事实。
注意:我不是说不应该测试此行为,只是这样的测试不需要用户代码重复。它应该包含在实现的测试套件中,例如here用于CPython。
答案 1 :(得分:1)
您可以解析X.mro()
的输出,该输出返回 m 方法 r 解决方案 o rder,并确保{ {1}}在Mixin
之前:
Y
但是,我不确定这不是实现细节,也不知道可以(或应该)多少子类顺序。如果您的代码依赖于此,则设计中可能存在错误。