python - 使用 MongoEngine 在 Flask 中测试套件

标签 python unit-testing flask mongoengine test-suite

我在 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/

相关文章:

python - 在 stackless python 中,通过 channel 发送的数据是不可变的吗?

python - 推出Python项目

python - 如何使用 Flask 框架点击 html 按钮在后台运行 python 脚本

python - 如果,if-else和Elif语句

python - 如何在多核机器上加速 python 单元测试?

java - 单元测试 OSGi 组件

java - 单元测试 - 定理

python - Flask Python 中的无效登录逻辑

Flask如何在 Controller 之间共享变量

python - 将 django-import-export 与基于类的 View 一起使用