gpt4 book ai didi

python - 在 python 中获取命令行参数时出错

转载 作者:行者123 更新时间:2023-11-30 22:52:21 24 4
gpt4 key购买 nike

我正在使用 Windows 和 python2.7。我的程序很简单。通过命令行获取输入并检查它是否为“5”。

代码:

import unittest
import sys

a=sys.argv[1]

print a

class TestCase(unittest.TestCase):
"""My tests"""

def test_is_number_is_five(self):
self.assertEqual('5',a)

if __name__ == '__main__':
unittest.main()

并使用以下命令运行它:

>>python test.py 5

我收到此错误:

Traceback (most recent call last):
File "C:\Python27\lib\unittest\main.py", line 94, in __init__
self.parseArgs(argv)
File "C:\Python27\lib\unittest\main.py", line 149, in parseArgs
self.createTests()
File "C:\Python27\lib\unittest\main.py", line 158, in createTests
self.module)
File "C:\Python27\lib\unittest\loader.py", line 130, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "C:\Python27\lib\unittest\loader.py", line 100, in loadTestsFromName
parent, obj = obj, getattr(obj, part)
AttributeError: 'module' object has no attribute '5'

最佳答案

unittest.main()将获取要从命令行运行的测试列表。因此,它尝试在您的模块中查找名为 5 的测试,但由于不存在此类测试而失败。

要解决此问题,您可以将自己的 argv 值传递给 unittest.main():

if __name__ == '__main__':
unittest.main(argv=sys.argv[:1])

这仅传递第一个参数,即脚本文件名。但是,如果您想在命令行上传递测试名称,它确实会破坏 unittest.main() 的一些功能。

关于python - 在 python 中获取命令行参数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38603427/

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