如何使用 unites Flask 模拟 mongodb

How to mock mongodb with unites Flask

我想模拟 mongo 以便使用 Flask 的单元测试进行一些单元测试。关于这个的文档太大了,我真的不知道怎么做。

我想用以下数据测试 POST 方法:

from unittest import TestCase, main as unittest_main, mock
from bson.objectid import ObjectId
from app import app


sample_user = {
    'Id': ObjectId('5d55cffc4a3d4031f42827a3'),
    'Username': 'LeTest',
    'Mail': 'sendme@gmail.com',
    'password': 'test123',
    'Qrcode': 'TODO'
}

你能解释一下我如何测试 sample_user 是否添加到我的 mongo collection 吗? 谢谢!

我找到了答案:

这里有我的代码,可以用 Flask

模拟 mongoDB 数据
    def test_post_food(self):
    # Mock the food value in ./api.food.py
    with unittest.mock.patch('api.food.food') as MockFood:
        # Force the return value of food.insert_one(json) to sample_food
        MockFood.insert_one.return_value = sample_food
        with self.client.post("/api/addFood", json=sample_food[0]) as res:
            # Check if food.insert_one(json) was called
            MockFood.insert_one.assert_called()
            self.assertEqual(res.status_code, 200)
            self.assertEqual(res.data, b'{"Response":"Food was added"}\n')


sample_food = [{
"_id": {
    "$oid": "619e8f45ee462d6d876bbdbc"
},
'Utilisateur': "999",
'Nom': 'Danette Vanille',
'Marque': 'Danone',
'Quantite': 4,
'ingredients': [
    'lait entier',
    'lait écrémé reconstitué à base de lait en poudre',
    'sucre',
    'crème',
    'lait écrémé concentré ou en poudre',
    'épaississants (amidon modifié, carraghénanes)',
    'perméat de petit lait (lactosérum) en poudre',
    'amidon',
    'arôme (lait)',
    'colorant (bêta-carotène)'
],
'Date': '20/12/2021',
'Valeurs': {
    'Energie': '107 kcal',
    'Matières grasses': '3,0g',
    'Glucides': '17,1g',
    'Proteines': '3g',
    'Sel': '0,14g'
},
'Poids': '125g',
'Lieu': 'Frigo',
'Category': "Produit laitiers"

}]