Python 第一次测试成功,所有后续测试失败。也许是过时的应用程序上下文?

Python 第一次测试成功,所有后续测试失败。也许是过时的应用程序上下文?,python,unit-testing,flask,flask-sqlalchemy,python-unittest,Python,Unit Testing,Flask,Flask Sqlalchemy,Python Unittest,我试图使用Python unittest模块设置一些单元测试,但我无法通过多个测试。它们似乎按字母顺序运行,只有第一个成功完成。不过,我可以单独运行任何一个测试,并且完成得很好。我猜这与每次都没有一个新的应用程序上下文有关,但我想不出来 ❯ ./test_api.py .FF ====================================================================== FAIL: test_get_category_of_questions (__

我试图使用Python unittest模块设置一些单元测试,但我无法通过多个测试。它们似乎按字母顺序运行,只有第一个成功完成。不过,我可以单独运行任何一个测试,并且完成得很好。我猜这与每次都没有一个新的应用程序上下文有关,但我想不出来

❯ ./test_api.py
.FF
======================================================================
FAIL: test_get_category_of_questions (__main__.TriviaTestCase)
Test getting a list of trivia questions by category.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./test_api.py", line 73, in test_get_category_of_questions
    self.assertEqual(response.status_code, 200)
AssertionError: 404 != 200

======================================================================
FAIL: test_get_one_question (__main__.TriviaTestCase)
Test getting a specific question.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./test_api.py", line 35, in test_get_one_question
    self.assertEqual(response.status_code, 200)
AssertionError: 404 != 200

----------------------------------------------------------------------
Ran 3 tests in 0.343s

FAILED (failures=2)
[1]    3318 exit 1     ./test_api.py
最后两个404应该是200秒。可能有一个线索,我甚至没有得到预期的404。应该有一些json附加到响应体,但是没有,并且mimetype实际上是['text/html']。我完全糊涂了,根本不知道该怎么做。我会切换到pytest,这是我比较幸运的,但是这个项目需要使用unittest


查看此处的文档:

似乎您必须关闭连接,或者将
测试客户机()
放在
中,并使用
块延迟连接。比如:

with self.app.test_client() as client:
    response = client.get('/questions')
    print(f'test_get_default_page_of_questions response is {response}')
    self.assertEqual(response.status_code, 200)

我让它工作了。我只需要创建一次Flask应用程序作为类属性,而不是每次在
setUp()
中创建一个新应用程序。然后我在
setUp()
中创建了一个新的
test\u客户机()
,我可以使用该客户机发出请求。感谢所有与我一起查看的人。

您需要显示一些代码。只需添加链接。很抱歉,调试器没有告诉我任何有用的信息。每个测试都有一个唯一的
app\u上下文
test\u客户端
。我仍然不知道哪里出了问题。我用
块尝试了
的一些变体,包括刚才尝试的你发布的方式,但不幸的是,我得到了完全相同的结果。