我想爲Python腳本編寫單元測試。腳本本身正確運行。Python:如何單元測試讀取命令行arg的類?
腳本由一個類組成,它從命令行讀取一個值到類變量中。
當我將類導入到測試文件中時,在類從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或從命令行運行的結果沒有什麼不同。
這可以使用unittest完成嗎?還是我需要別的東西?
任何幫助將不勝感激!
我認爲這是非常相關的:[如何設置sys.argv,以便我可以單元測試它?](http://stackoverflow.com/questions/18668947/how-do-i-set-sys-argv -SO-I-罐單元測試-它) – alecxe