我在 Flask 中有一个小应用程序,我想对其进行测试。我以前使用过 Django 测试,我只是开始掌握 Flask 中较低级别的功能。
我的测试目前是这样的:
import unittest
from config import app
from mongoengine import connect
from my_app.models import User
class TestCase(unittest.TestCase):
def setUp(self):
app.config['TESTING'] = True
app.config["MONGODB_DB"] = 'xxx'
connect(
'xxx',
username='heroku',
password='xxx',
host='xxx',
port=xxx
)
self.app = app.test_client()
def tearDown(self):
pass
def test_create_user(self):
u = User(username='john', email='john@example.com')
u.save()
我知道这是错误的,因为测试通过了,但我已经在数据库中添加了一个条目。我应该如何在不污染数据库的情况下测试用户的创建?我原以为 app.config['TESTING']
在这里有一定的意义。
最佳答案
我知道有两种方法:
<强>1。单独的测试数据库
这是 Django 自动为单元测试做的事情。它只是使用一个单独的数据库进行测试,在每次测试运行之前和之后都会清除该数据库。您可以手动实现类似的功能。
<强>2。使用 Mocking 避免实际使用数据库
在大多数情况下,这是更可取的方法。您使用模拟来模拟各种功能,以便测试实际上不会在真实数据库中创建/编辑/删除信息。由于多种原因,这更好,最显着的原因是单元测试的性能/速度。
关于python - 使用 MongoEngine 在 Flask 中测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16554127/