报告没有`-m unittest的Python测试用例模块的意外调用`

报告没有`-m unittest的Python测试用例模块的意外调用`,python,python-unittest,python-module,Python,Python Unittest,Python Module,无意中,我使用以下命令调用了Python单元测试: coverage run -m tests.unit.Tokens 这执行了一些代码并报告了覆盖率报告。但实际上,覆盖范围看起来只是初始化。没有错误消息,也没有异常。 经过一些搜索和调试,我发现我错过了-m和我的测试用例模块之间的包名unittest。因此,模块“已执行”不是unittest,参数为tests.unit.Tokens。它直接执行测试用例声明模块 呼叫示例: coverage run -m tests.unit.Tokens

无意中,我使用以下命令调用了Python单元测试:

coverage run -m tests.unit.Tokens
这执行了一些代码并报告了覆盖率报告。但实际上,覆盖范围看起来只是初始化。没有错误消息,也没有异常。

经过一些搜索和调试,我发现我错过了
-m
和我的测试用例模块之间的包名
unittest
。因此,模块“已执行”不是
unittest
,参数为
tests.unit.Tokens
。它直接执行测试用例声明模块

呼叫示例:

coverage run -m tests.unit.Tokens
Module 'tests.unit.Tokens' needed to be loaded by Pythons `unittest`.
Use 'python3 -m unitest test.unit.Tokens'
应该报告如下内容:

coverage run -m tests.unit.Tokens
Module 'tests.unit.Tokens' needed to be loaded by Pythons `unittest`.
Use 'python3 -m unitest test.unit.Tokens'

我可以添加/实现/覆盖什么,因此直接调用模块会显示错误消息

我可以想象,它看起来就像我们在主Python文件中使用的:

if __name__ == "__main__":
  # this is the entry point

通过
python-m
启动的模块也在名称空间
\uuuuu main\uuuu
中执行。因此,(声明性)testcase模块中的以下代码可以给出如何正确执行testcase的提示

if __name__ == "__main__":
  print("ERROR: you called a testcase declaration file as an executable module.")
  print("Use: 'python -m unitest <testcase module>'")
如果名称=“\uuuuu main\uuuuuuuu”:
打印(“错误:您将testcase声明文件作为可执行模块调用。”)
打印(“使用:'python-m unitest'”)

我相信您已经回答了自己的问题。。您是否尝试过
如果uuuu name_uuu==“uuuu main_uuuu”:
并遇到错误?@Aaron我不确定使用
-m
执行是否与使用shebang执行相同。但是是的,它也运行在
\uuuu main\uuu
名称空间中。