1
私は現在、私のpythonスクリプトの単体テストを書いています。私の機能の1つは、次のコードを持っています:pytestとレジストリ接続をmonkeypatchする方法
from _winreg import *
aReg = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
aKey = OpenKey(aReg, LIBRARIES_REG_KEY)
count, value, type = QueryInfoKey(aKey)
ver_list = [EnumKey(aKey, x) for x in range(count) if EnumKey(aKey, x).startswith(version)]
私はほとんどのテストでmonkeypatchを使用しています。私はConnectRegistry(またはOpenKey)関数をmonkeypatchして、必要なデータを返す方法があるのだろうかと思っていました。私はそれを別のデータをフィードし、動作をテストします。
いいえ、インポートはその機能に含まれていません。私は、EnumKey関数で有効なキーとして解釈される、必要なデータを含むレジストリキーオブジェクトを返すためにOpenKey関数を擬似的に処理する方法があると考えました。それは可能でしょうか、それとも3つすべてにパッチを当てなければならないという制限がありますか?なぜなら、私が3つの機能にパッチを当てれば、テストする余裕はあまりないからです。 – Amaranth
@Amaranth:これらの機能がWindowsマシン上のシステムレジストリにアクセスしていると思いますか?私はそれがどのように機能するかについてはあまり知らない。 OpenKeyとEnumKeyがパッチを適用しないで妥当なことをするように、my_CRとmy_OKから戻ってくるものを制御できれば、あなたは大丈夫だと思います。あなたのテストは、レジストリ内の適切なもの、つまり自分のマシン上でのみ、あるいはそのように構成されているマシン上でのみ動作します。 –