Python Unittest自动发现未生效,运行test.unit无测试用例执行
测试用例未被识别的原因及解决办法
1. 测试函数未遵循unittest框架规则
Python的unittest框架默认仅识别继承自unittest.TestCase的类中的测试方法,普通的test_开头函数不会被自动判定为测试用例。你的代码里只是定义了一个普通函数,不符合框架的识别逻辑。
修改示例:
import unittest from ..util.foo import run_foo class TestSomeUnit(unittest.TestCase): def test_some_unit(self): run_foo() print("Unit test") # 建议添加断言逻辑,否则测试仅执行代码无验证结果 self.assertTrue(True)
2. 相对导入与包结构不规范
测试文件使用from ..util.foo import run_foo相对导入,需要满足两个前提:
test/unit目录下必须存在__init__.py文件(空文件即可),使其成为合法的Python包;util目录同样需要__init__.py,且项目根目录要在Python的sys.path搜索路径中。
建议从项目根目录执行测试命令,避免因导入路径错误导致模块加载失败,进而测试用例被跳过。
3. 测试发现命令参数格式错误
你执行的python -m unittest discover test.unit参数格式有误:discover的起始目录需要用路径分隔符(如/)而非点.。正确命令应为:
# 从项目根目录执行,指定测试目录 python -m unittest discover test/unit # 或明确指定匹配的测试文件模式 python -m unittest discover -s test/unit -p "test_*.py"
如果想用点分隔的模块名运行,需直接指定模块而非使用discover:
python -m unittest test.unit.test_some_unit
内容的提问来源于stack exchange,提问作者user118967
相关产品推荐
相关产品推荐

