👃

nose-pluginのaddSkipはdeprecated

2022/03/01に公開

ぶっちゃけ需要があるとは思えないけどハマったので記録のために。

表題の通り現在のバージョンではaddSkipメソッドはdeprecatedになっているため、skipしたテストもErrorとして送られてくる

Warning DEPRECATED – check error class in addError instead

ref: https://nose.readthedocs.io/en/latest/plugins/interface.html#nose.plugins.base.IPluginInterface.addSkip

これだとskipでもerrorとされてしまうのでplugin側では困る。

じゃあどうしたかというと、こんな感じでerrorのtypeでチェックして回避した

    @protect
    def addError(self, test, err, capt=None):
        type, value, traceback = err
        if type in (unittest.case.SkipTest, SkipTest):
                    # some logic

より厳密にやるなら unittest2 もケアしてあげないといけないが大抵の場合は大丈夫(だと思う)。

ref: https://github.com/nose-devs/nose/blob/7c26ad1e6b7d308cafa328ad34736d34028c122a/nose/plugins/skip.py#L18-L27

Discussion