gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:53 25 4
gpt4 key购买 nike

我正在尝试将命令行参数传递给我的单元测试。但是,我没有使用 if __name__ == '__main__' block ,因为所有内容都打包为相对路径。所以调用 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 都是要测试的模块列表的一部分。

关于没有 main 的 Python unittest 模块命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22105595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com