2020年9月20日日曜日

pytest でコンストラクタを mokeypatch したい

概要

pytest の monkeypatch でコンストラクタをパッチしたい場合があると思います
そんな場合の対処方法を紹介します

環境

  • macOS 10.15.6
  • Python 3.8.5

答え: クラスを差し替える

メイン

class User():
    def __init__(self, name, age):
        self.name = name
        self.age = age

def hello():
    u = User("hawksnowlog", 10)
    return u.name

テストコード

from user import hello

class DummyUser():
    def __init__(self, name, age):
        self.name = "dummy"
        self.age = 9999

def test_hello(monkeypatch):
    monkeypatch.setattr("user.User", DummyUser)
    assert(hello() == "dummy")

0 件のコメント:

コメントを投稿