2017-06-01 2 views
1

Ich habe einen sehr einfachen Test:Python Attribute assert_called

from unittest.mock import Mock 
from urbansearch import main 

main.ArgumentParser = Mock() 

def test_parse_arguments(): 
    main.parse_arguments() 
    main.ArgumentParser.add_argument.assert_called() 

, die die folgende Methode testet:

from argparse import ArgumentParser 

def parse_arguments(): 
    parser = ArgumentParser(description='The TU Delft Urbansearch CLI') 

    parser.add_argument('-d', '--directory', 
        help='Source files directory containing files with ' 
          + 'indices') 
    return parser.parse_args() 

wenn diese Prüfung erhalte ich die Fehlermeldung: Attribute: assert_called. Warum bekomme ich diesen Fehler und wie löse ich das? Ich habe auch viele verschiedene Varianten ausprobiert, aber ich bekomme immer mehr oder weniger das gleiche Ergebnis.

bearbeiten: Der Test befindet sich in Urbansearch/tests/test_main.py. Die Methode befindet sich in Urbansearch/urbansearch/main.py.

Der genaue Ausgang, den ich bekomme, ist der folgende;

============================= test session starts ============================= 
platform win32 -- Python 3.5.3, pytest-3.0.7, py-1.4.33, pluggy-0.4.0 
rootdir: C:\Users\tom_b\OneDrive\Dokumente\GitHub\UrbanSearch, inifile: 
plugins: cov-2.3.1 
collected 4 items 

test_main.py FFFF 

================================== FAILURES =================================== 
___________________________ test_selection_workers ____________________________ 

    def test_selection_workers(): 
>  assert False 
E  assert False 

test_main.py:10: AssertionError 
________________________ test_download_indices_for_url ________________________ 

    def test_download_indices_for_url(): 
>  assert False 
E  assert False 

test_main.py:14: AssertionError 
____________________ test_classify_documents_from_indices _____________________ 

    def test_classify_documents_from_indices(): 
>  assert False 
E  assert False 

test_main.py:18: AssertionError 
____________________________ test_parse_arguments _____________________________ 

    def test_parse_arguments(): 
     main.parse_arguments() 
>  main.ArgumentParser.add_argument.assert_called() 

test_main.py:23: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <Mock name='mock.add_argument' id='2022243875864'> 
name = 'assert_called' 

    def __getattr__(self, name): 
     if name in {'_mock_methods', '_mock_unsafe'}: 
      raise AttributeError(name) 
     elif self._mock_methods is not None: 
      if name not in self._mock_methods or name in _all_magics: 
       raise AttributeError("Mock object has no attribute %r" % name) 
     elif _is_magic(name): 
      raise AttributeError(name) 
     if not self._mock_unsafe: 
      if name.startswith(('assert', 'assret')): 
>    raise AttributeError(name) 
E    AttributeError: assert_called 

C:\Users\tom_b\Anaconda3\lib\unittest\mock.py:585: AttributeError 
========================== 4 failed in 1.68 seconds =========================== 
+0

Bericht des voll [Traceback] (https://docs.python.org/3/library/traceback.html) Ihre Chance auf eine Antwort zu maximieren. – Kanak

+0

Einige weitere Informationen wären nützlich - was ist zum Beispiel "wichtig"? – rammelmueller

+0

@LukasR Der Test befindet sich in Urbansearch/tests/test_main.py. Die Methode befindet sich in Urbansearch/urbansearch/main.py. Main wird nicht als Objekt deklariert. p.s. kann ich hier besser auf Ihren Kommentar antworten oder die Hauptfrage bearbeiten? –

Antwort