>我有一个死的简单烧瓶应用程序:
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 会在一行中一次打印出一个点。