2017-01-12 8 views
0

私は単語の数を見つけ、特定の単語の出現数を見つける必要のあるプロジェクトに取り組んでいます。AttributeError: 'module'オブジェクトに属性 'file'がありません

Testing.py

import unittest 
import sys 
import string 
import funs 
from funs import * 


empty_list =[] 
count = 0 
file_name = sys.argv[1] 
search = sys.argv[2] 
with open(file_name,'r') as f: 
    for line in f: 
     for word in line.split(): 
      #Effective Way 
      word = word.translate(None, string.punctuation) 
      word = word.lower(); 
      empty_list.append(word) 
      count += 1 


class TestMyFunction(object): 
    def test_search(self): 
     self.assertTrue(search_word_fun(empty_list,'kiran'),0) 

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

funs.py

def longest_word_fun(empty_list,longest_word): 
    for each_word in empty_list: 
     if (len(each_word) == len(longest_word)): 
      print each_word 
def search_word_fun(empty_list,search): 
    print "No of times %s occurs is %d"%(search,empty_list.count(search)) 

def count_word_fun(count): 
    print "No of words in file is %d"%(count) 

エラーログ:通常のように、1つとして、引数を実行しながら、ここで

python testing.py file.txt he 
Traceback (most recent call last): 
    File "testing.py", line 27, in <module> 
    unittest.main() 
    File "/usr/lib/python2.7/unittest/main.py", line 94, in __init__ 
    self.parseArgs(argv) 
    File "/usr/lib/python2.7/unittest/main.py", line 149, in parseArgs 
    self.createTests() 
    File "/usr/lib/python2.7/unittest/main.py", line 158, in createTests 
    self.module) 
    File "/usr/lib/python2.7/unittest/loader.py", line 130, in loadTestsFromNames 
    suites = [self.loadTestsFromName(name, module) for name in names] 
    File "/usr/lib/python2.7/unittest/loader.py", line 100, in loadTestsFromName 
    parent, obj = obj, getattr(obj, part) 
AttributeError: 'module' object has no attribute 'file' 

は、私がテストファイルを取っていますテキストファイルやその他の引数は検索キーワードです。それがunittestによって動作しているかどうかをテストする必要があります。

関数を実行中にエラーが発生しました。

+1

可能な複製を(HTTP ://stackoverflow.com/questions/41404922/command-line-invocation-of-unittests-from-main-failing) –

答えて

2

unittestが使用するコマンドライン引数を読み取ろうとすると、競合が発生します。 あなたは)引数を読み、その後(unittest.main呼び出す前にそれらを削除することによってそれを解決することができます:[\ _ \ _メイン\ _ \ _失敗からユニットテストのコマンドラインからの呼び出し]の

if __name__ == '__main__': 
    cmd_parameters = sys.argv[1] 
    del sys.argv[1:] 
    unittest.main() 
関連する問題