鼻子单元测试发现在 python 3.8 上被破坏

use*_*028 7 unit-testing nose python-3.x

今天从python 3.7升级到3.8。鼻子中的单元测试发现不再有效。

简化的项目布局

x:\proj\src\__init__.py
x:\proj\src\first.py
x:\proj\tests\__init.py
x:\proj\tests\testfirst.py
Run Code Online (Sandbox Code Playgroud)

从项目 root x:\proj,运行:

nosetests -v
-----------------------------------------------
Ran 0 tests in 0.016s

OK
Run Code Online (Sandbox Code Playgroud)

只能通过指定它们来运行单元测试,例如:

nosetests tests.testfirst
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
Run Code Online (Sandbox Code Playgroud)

平台

  • 鼻子测试版本 1.3.7
  • Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 位 (AMD64)] on win32

use*_*028 11

--traverse-namespace当有多个包时,Nose 现在要求您使用该选项。您可以将其添加到nosetests调用中,或者为了保存自己的输入,将其添加到setup.cfg,例如:

[nosetests]
traverse-namespace=1
Run Code Online (Sandbox Code Playgroud)

  • 我不能说是鼻子还是蟒蛇造成的,但我可以确认相同的行为。在 Windows 10 上,nose 成功找到了使用 Python 3.7 的所有测试,但在没有 --traverse-namespace 的 Python 3.8 上失败了。 (2认同)