如何使用 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"
}]
我想模拟 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"
}]