烧瓶单元测试中的日志在换行符后打印出点



>我有一个死的简单烧瓶应用程序:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return("Hello World!")
if __name__ == '__main__':
app.run()

连同__main__.py文件:

from .core import app
import src.core
app.run()

我添加了一个测试:

from unittest import TestCase
import logging as log
import src.core
class runTests(TestCase):
def setUp(self):
src.core.app.testing = True
self.client = src.core.app.test_client()
def test_hello_world(self):
response = self.client.get("/")
log.warning(f"resp: {response.data}")
self.assertEqual(b"Hello World!",response.data)

整体树结构如下所示:

➜  apptest tree -L 2
.
├── src
│   ├── core.py
│   ├── __main__.py
│   └── __pycache__
└── tests
├── __pycache__
└── test.py
4 directories, 3 files
➜  apptest

当我运行测试时,我得到了意外的输出:

➜  apptest python -m unittest tests.test
WARNING:root:resp: b'Hello World!'
.
----------------------------------------------------------------------
Ran 1 test in 0.011s
OK
➜  apptest

日志换行符后有一个随机点。我尝试修改 test.py 进行检查:

from unittest import TestCase
import logging as log
import src.core
class runTests(TestCase):
def setUp(self):
src.core.app.testing = True
self.client = src.core.app.test_client()
def test_hello_world(self):
response = self.client.get("/")
log.warning(f"resp: {response.data}")
log.warning("2nd log")
self.assertEqual(b"Hello World!",response.data)
def test_hello_world_2(self):
log.warning("3rd log")
log.warning("4th log")
self.assertEqual("Hello World!",self.teststring)

和输出:

➜  apptest python -m unittest tests.test
WARNING:root:resp: b'Hello World!'
WARNING:root:2nd log
.WARNING:root:3rd log
WARNING:root:4th log
.
----------------------------------------------------------------------
Ran 2 tests in 0.011s
OK
➜  apptest

如果我的想法是正确的,似乎每个函数的最后一个日志都在打印n.而不仅仅是n

是什么原因造成的,以及如何摆脱它?

我遇到了同样的问题,所以我做了一个小测试。 如果我的测试没有任何输出,unittest 输出将根据 unittest 函数的数量打印出几个点。 当我有三个函数时,输出格式如下所示:

...

----------------------------------------------------------------------

Ran 3 tests in 0.002s

OK

似乎在完成某些测试后,unittest 会在一行中一次打印出一个点。

最新更新