2016-05-23 12 views
2

私はPythonコードのテストにMongoMockでPythonコードをテストするためにnosetestsを使用しています。私はmongoMockでPythonモック標準ライブラリを使用しました:https://github.com/vmalloc/mongomock、私はpockongo.MongoClientモジュールをモック問題はmongoMockオブジェクトが実際のオブジェクトを置き換えないことです。つまり、テスト関数は実際のmongoDB接続を使用しています。私は、コードはまだ本当のデータベースに挿入され、コードが実際の接続を印刷し、テストを実行するとモックmongoDBのPythonユニットテスト

@mock.patch('pymongo.MongoClient') 

def test_post_data(mock_MongoClient): 

    mock_MongoClient.return_value= mongomock.MongoClient().db.collection 

    post_data() 

def post_data(): 

    connection = MongoClient('mongodb://localhost:27017/').customers.review 
    post = {"author": "Mike", 
    "text": "My first blog post!", 
    "tags": ["mongodb", "python", "pymongo"], 
    "votes":1} 
    print connection 

    connection.insert_one(post) 

テスト機能:

これは実際のコードです! ! どうしたら間違っていて、それを正しく行うにはどうすればいいですか?

ありがとうございます!

答えて

2

実際のコードとテストコードが問題なく動作していて、モックオブジェクトが実際に呼び出されなかったので、問題が解決しました。私は@ mock.patchを実行したときに言及していました。私は

connection = pymongo.MongoClient('mongodb://localhost:27017/').customers.review 

代わりの

connection = MongoClient('mongodb://localhost:27017/').customers.review 
を書くことを書くことによって私の接続を作成する必要がある理由です。このモジュール @mock.patch'pymongo.MongoClient'
関連する問題