【发布时间】:2016-11-07 11:52:47
【问题描述】:
我想为 Python 脚本编写单元测试。脚本本身运行正常。
脚本由一个类组成,它从命令行读取一个值到一个类变量中。
当我将类导入我的测试文件时,在类从 sys.argv[] 读取的位置出现错误“列表索引超出范围”。
我是 Python 和一般测试新手。在过去的几天里,我已经阅读了很多关于此的文档和 SO 页面。
代码如下:
文件 bongo.py --
import sys
class Bongo:
my_int = int(sys.argv[1])
def __init__(self, n):
self.n = n
def get_sum(self):
return self.n + Bongo.my_int
if __name__ == '__main__':
bongo = Bongo(5)
m = bongo.get_sum()
print('bongo.get_sum() returns {}'.format(m))
文件 bongo_test.py --
import unittest
from bongo import Bongo
class TestBongoMethods(unittest.TestCase):
def setUp(self):
self.bongo = Bongo(10)
self.bongo.my_int = 5
def test_get_n(self):
self.assertEqual(self.bongo.get_sum(), 15)
if __name__ == '__main__':
unittest.main()
运行python bongo_test.py的输出是
Traceback (most recent call last):
File "bongo_test.py", line 2, in <module>
from bongo import Bongo
File "/home/me/class_for_testing/bongo.py", line 4, in <module>
class Bongo:
File "/home/me/class_for_testing/bongo.py", line 6, in Bongo
my_int = int(sys.argv[1])
IndexError: list index out of range
我已经尝试了所有我能想到的;我一直在 PyCharm Pro 2016.1 中使用 Py 2.7, 但是使用 Py 3.4 或从命令行运行的结果没有什么不同。
这可以使用单元测试来完成吗?还是我需要别的东西?
任何帮助将不胜感激!
【问题讨论】:
标签: python unit-testing pycharm command-line-arguments