ここにドラゴンがいます。あなたは警告されました。
より良いテスト スイートを作成するのに役立つ新しいライブラリを作成することを考えています。これを行うための機能の 1 つは、テスト ランナーではなく、テスト対象のシステムで使用されているすべてのオブジェクトにテスト ダブル (モック オブジェクト、スタブ、フェイク、またはダミー)
があることを検証する機能です。)。テスターがライブ オブジェクトを必要とするため、テストの分離を減らす場合は、そのように明示的に指定する必要があります。
type()
これを行う唯一の方法は、デフォルトのメタクラスである組み込み関数をオーバーライドすることです。
新しいデフォルト メタクラスは、test double レジストリ ディクショナリをチェックして、test double に置き換えられているかどうか、またはライブ オブジェクトが指定されているかどうかを確認します。
もちろん、これは Python 自体では不可能です。
>>> TypeError: can't set attributes of built-in/extension type 'type'
テスト スイート (およびおそらく Python) が実行される前に、Python のメタクラス ルックアップに介入する方法はありますか?
たぶんバイトコード操作を使用していますか?しかし、どのように正確に?