gpt4 book ai didi

python - sys.argv 的 IndexError 和测试命令行参数

转载 作者:行者123 更新时间:2023-12-01 04:29:26 24 4
gpt4 key购买 nike

我正在按照这些思路编写各种单元测试测试用例:

import unittest
import program

class test(unittest.TestCase):
a = 'acgt'
b = 'c'
sys.argv[1] = a
sys.argv[2] = b
text, patterns = program.parse()
assertEqual(text, a)
assertEqual(patterns, [b])

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

不幸的是,它们都返回索引超出范围的IndexError。这是有道理的,因为命令行上没有传递任何内容。如何从 sys.argv 中填充 sys.argv 参数,以便测试通过解析器获取它们的方法?

最佳答案

您只需更改 argv 变量即可

class MyTest(unittest.TestCase):
def test(self):
import sys
sys.argv = ['0', '1', '2']
program()


def program():
import sys
print(sys.argv[1])
print(sys.argv[2])

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

但这不是推荐的方式。而是更改程序的签名,使其接受一个列表,以便您可以轻松控制它的调用方式。

program(sys.argv)  # From command line
program(['param1', 'param2']) # From Tests

关于python - sys.argv 的 IndexError 和测试命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32578491/

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