私は基本的な操作を持つカスタムDb
クラスを持っています。私はそれを回避しようとしています - __init__
私のクラスの私は避けたい実際のDBに接続している(私は単なる単体テストを書くので、実際のDBに接続する必要はない)。pytest:私のクラスの__init__をモックできません
これは私のコードです:
@mock.patch('mydb.Db')
@pytest.mark.parametrize("input,expected", [
(
{
'key' : "x" ,
'value' : 5 ,
} ,
[ "x = 5" ]
) ,
])
def test_where_statement(mock_db, input, expected):
mock_db.__init__.return_value = None
assert expected == mock_db.where(input[ "key"] , input[ "value" ])._condition_list
それは私がNoneにRETURN_VALUEを設定する行に失敗する - 問題は、次のとおりです。
def test_where_statement(mock_db, input, expected):
> mock_db.__init__.return_value = None
E AttributeError: 'instancemethod' object has no attribute 'return_value'
私はinit関数をモックしてからになりたいですwhere関数を実行することができます(たとえば、クエリのwhereステートメントを作成します)。
私には何が欠けていますか?
あなたのテストファイルに 'Db'インポートをパッチしていますか? – dm03514
@ dm03514どういう意味ですか?私はテストファイルの上に 'from mydb import Db'を持っています。 – ghostrider
@ghostrider最新の回答を確認してください。 – erhesto