Python Flask中的unittest:打印消息被截断

时间:2018-09-17 05:30:07

标签: python-3.x flask

我正在使用unittest编写我的第一个Flask测试。目前,我有三个简单的测试,如下所示:

def setUp(self):
    app = create_app()
    self.app = app.test_client()

def test_1(self):
    response = self.app.get('/', follow_redirects=True)
    self.assertEqual(response.status_code, 200)

def test_2(self):
    response = self.app.get('/endpoint1', follow_redirects=True)
    self.assertEqual(response.status_code, 200)

def test_3(self):
    headers = { "API-KEY": "myKey", "Accept": "application/xml" 
    response = self.app.get('/endpoint1', follow_redirects=True, headers=headers)
    self.assertEqual(response.status_code, 200)

在调试上一个测试时,我注意到它的大多数打印语句似乎从来没有出现在我的控制台上。我知道它到达了我的代码中返回403的位置,但是导致该return语句的print语句似乎被截断了。

前两个测试的打印语句全部输出到我的控制台。

即使我更改测试的顺序,最后一条的打印语句也总是被截断。

运行最终测试时,可能是unittest框架在服务器有机会最终确定将其(缓冲的)打印语句输出到控制台之前,将服务器拆除了吗?

1 个答案:

答案 0 :(得分:0)

我似乎使用{with}块,如here所述。

示例:

def test_3(self):
    with self.app:
       headers = { "API-KEY": "myKey", "Accept": "application/xml" 
       response = self.app.get('/endpoint1', follow_redirects=True,    headers=headers)          
       self.assertEqual(response.status_code, 200)