gpt4 book ai didi

python - 如何单元测试命令行参数?

转载 作者:太空狗 更新时间:2023-10-29 22:08:26 33 4
gpt4 key购买 nike

我正在尝试向 Python unittest 提供命令行参数,但遇到了一些问题。我在互联网上搜索并找到了一种提供参数的方法

unittest.main(argv=[myArg])

问题是这对单个命令行参数工作正常但对多个参数失败。

unittest.main(argv=[myArg1, myArg2, myArg3])

以上调用失败并出现以下错误:

  File "/opt/python2.6.6/lib/python2.6/unittest.py", line 816, in __init__
self.parseArgs(argv)
File "/opt/python2.6.6/lib/python2.6/unittest.py", line 843, in parseArgs
self.createTests()
File "/opt/python2.6.6/lib/python2.6/unittest.py", line 849, in createTests
self.module)
File "/opt/python2.6.6/lib/python2.6/unittest.py", line 613, in
loadTestsFromNames suites = [self.loadTestsFromName(name, module)
for name in names]
File "/opt/python2.6.6/lib/python2.6/unittest.py", line 584, in
loadTestsFromName parent, obj = obj, getattr(obj, part)
AttributeError: 'module' object has no attribute 'admin'

深入研究发现 Python unittest 将使用 argv 发送的所有内容视为要运行的测试用例。

如果还有办法为我的单元测试用例提供多个参数,请告诉我。我想覆盖一些硬编码值,如 IP 地址、测试用例标签等,并从本质上从主测试脚本中运行此测试脚本。

提前致谢。

最佳答案

为什么不在运行 unittest.main 之前取出命令行参数,然后给它[sys.argv[0]] its argv?

类似于:

if __name__ == '__main__':
# do stuff with sys.argv
unittest.main(argv=[sys.argv[0]])

请注意,当给定 argv=None 时,unittest.main 实际上将其作为解析 sys.argv 的信号。 unittest.main 需要至少一个 argv 元素用作程序名称。所以避免 None[sys.argv[0]] 是一个很好的值(value),因为它认为它没有命令行参数。


附言我刚刚注意到你的最后一句话。如果是这种情况 - 不要使用命令行参数。您的“主”测试脚本应该只使用 unittest 的 API 来加载模块的测试用例,并根据需要自定义它们。

关于python - 如何单元测试命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5949181/

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