Flathon app在python unittest期间创建了两次

时间:2018-05-31 02:31:42

标签: python flask python-unittest

我有一个app.py文件,可以创建一个烧瓶应用

from app import create_app
class TestCase(unittest.TestCase):
    def setUp(self):
        self.app = create_app()
        self.client = self.app.test_client()
        ctx = self.app.app_context()
        ctx.push()

    def test_healthcheck(self):
        res = self.client.get("/")
        self.assertEqual(res.status_code, 200)

    def test_tenant_creation(self):
        res = self.client.post("/tenants")
        self.assertEqual(res.status_code, 200)

我正在尝试为我的模块编写单元测试,下面是文件

{{1}}

当我运行单独的测试方法时,它工作正常。但是当我运行整个测试用例时,再次调用create app会导致问题,因为我的create app有依赖项,只需要调用一次。

是否可以只创建一次应用程序?

2 个答案:

答案 0 :(得分:1)

每个测试方法之前调用

setUp。因此,如果运行整个测试用例,它将被调用两次(每种测试方法一次)。

要为TestCase仅运行一次,您可以尝试覆盖__init__方法(请参阅this SO question)或setUpClass or setUpModule。 YMMV取决于您正在使用的python版本和测试运行器。

答案 1 :(得分:-1)

IMO,问题可能与上下文有关。您应该创建一个tearDown()方法来销毁您在setUp()中创建的应用程序上下文:

class TestCase(unittest.TestCase):
    def setUp(self):
        self.app = create_app()
        self.client = self.app.test_client()
        self.ctx = self.app.app_context()
        self.ctx.push()

    def tearDown(self):
        self.ctx.pop()