没有main的Python unittest模块命令行参数



我正在尝试将命令行参数传递给我的单元测试。但是,我没有使用if __name__ == '__main__'块,因为所有内容都打包为相对路径。因此调用python path/to/test.py将抛出此错误:

from .setup import Utilities
ValueError: Attempted relative import in non-package

我按如下方式调用测试:python -m unittest test_file.test_name .这将启动setUpModule()功能。但是,命令行解析似乎发生在单元测试库中某个函数之前,因此传入任何不是模块的内容都会引发错误。如此:python -m unittest test_file.test_name arg1投掷:ImportError: No module named arg1.

有什么办法可以解决这个问题,而不必使用if __name__ == '__main__'

unittest寻求帮助会给出以下消息

$ ../python3 -m unittest -h
Usage: python3 -m unittest [options]
Options:
  -h, --help      show this help message and exit
  -v, --verbose   Verbose output
  -q, --quiet     Quiet output
  -f, --failfast  Stop on first fail or error
  -c, --catch     Catch ctrl-C and display results so far
  -b, --buffer    Buffer stdout and stderr during tests

unittest文档进一步描述了这些内容。 所以unittest需要一些选项(甚至还有一个子命令,discover)。 但是我没有看到将选项传递给您自己的模块的方法的证据。

再玩

-m unittest一点,很明显unittest试图解析任何options(例如 -z )。 其他所有内容(如您的arg1)都是要测试的模块列表的一部分。

最新更新