2017-01-12 5 views
0

Ich arbeite an einem Projekt, wo wir die Anzahl der Wörter finden müssen und auch keine Vorkommen eines bestimmten Wortes finden.AttributError: 'Modul' Objekt hat kein Attribut 'Datei'

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) 

Fehlerprotokoll:

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' 

Hier habe ich die Testdatei nehme und während die Argumente als eine als normale Ausführung Textdatei und anderes Argument ist das Such-Keyword.So muss es testen, ob es von Unittest funktioniert oder nicht.

Während der Ausführung der Funktion kam der Fehler.

+1

Mögliche Duplikat [Befehlszeilenaufruf von Unittests von \ _ \ _ Haupt \ _ \ _ andernfalls] (http : //stackoverflow.com/questions/41404922/command-line-invocation-of-ittetssts-from-main-failing) –

Antwort

2

Es gibt einen Konflikt, der dadurch verursacht wird, dass unittest versucht, die von Ihnen verwendeten Befehlszeilenargumente zu lesen. Sie können es lösen, indem die Argumente zu lesen und löschen sie dann vor dem Aufruf unittest.main():

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