2016-11-09 8 views
1
function.pyで
|-- my_module 
| |-- __init__.py 
| |-- function.py 
`-- test.py 

:私のtest.pyで__init__.pyパッチ機能

from .function import function 

import other_function 

def function(): 
    doStuff() 
    other_function() 
    return 

from django.test import TestCase 
from mock import patch 
from my_module import function 

class Test(TestCase): 

    @patch('my_module.function.other_function') 
    def function_test(self, mock_other_function): 
     function() 

これを実行すると、私は Attri buteError:

<@task: my_module.function.function of project:0x7fed6b4fc198> does not have the attribute 'other_function'

これは、モジュール「function」ではなく関数「function」にパッチを適用しようとしていることを意味します。モジュールにパッチを当てたいということを理解させる方法を知らない。

モジュールや機能の名前を変更しないようにしたいと思います。

アイデア?

[編集] あなたは__init__.pyに別の名前でモジュールを利用できるようにすることができhttps://github.com/vthorey/example_mock 実行

python manage.py test 
+0

解決方法はありますか? –

+0

@HaykDavtyan Nope。あなたは可視性を高めるために質問をupvoteすることができます;) –

答えて

0

で例を見つけることができます。そして、あなたは次の操作を行うことができます

from . import function as function_module 
from .function import function 

in test.py

from django.test import TestCase 
from mock import patch 
from dir import function 

class Test(TestCase): 

    @patch('dir.function_module.other_function') 
    def function_test(self, mock_other_function): 
     function() 

私はこれが特に優雅な解決策ではないと思います。コードは普通の読者にはあまり明確ではありません。

dirが組み込まれているので、サンプルコードでも使用しないでください。

+0

フィードバックありがとう、私は文字列を使用していた。私は質問を編集しました! –

+0

実際に実行されエラーに当たる例を教えてください。 'requests'パッケージを' other_function'として使用し、コードが正常に実行されました –

+0

https://github.com/vthorey/example_mock python manage.py testを実行するとエラーが発生します –

関連する問題