2017-08-09 10 views
1

私はインターネット上でpythonモジュールでflexmockを使用する例を探していますが、すべてのdocはobject/classのようです。私はモジュールによって返されたいくつかの変数を模擬することが可能かどうか疑問に思っています。そのモジュールが別のモジュールを呼び出すとどうなりますか?Pythonモジュールでflexmockを使用する

ex。

def function_inside_function(id, some_string): 
    test_log = {"id": id, "definition": some_string} 
    return test_log 

def function1(id): 
    some_string = 'blah' + id # i am totally bs-ing here 
    log = function_inside_function(id, some_string) 
    return log 

ので、今、私はオブジェクトと同じことをやったときに、私は(たとえば、オブジェクトがtest_objectように割り当てられていない可能性があり、当時のいくつかの値

を模擬するためにflexmockを使用して個別に各機能をテストしたいです)、そのオブジェクトの内部で呼び出されているsome_func

flexmock(test_object).should_receive('some_func').and_return('some_value') 

が、私はモジュールと同じことをしようとすると、私はそうならば、私はそれがモジュールにflexmockを使用することが可能かどうかを知りたい

FlexmockError: <function function1 at some_address> does not have attribute function_inside_function

を取得保管、および。どうやって?研究と臨床試験のnエラーの多くの後、それは私がsys.modules

を使用する必要があること

答えて

0

が判明私のモジュールはpath.to.moduleから輸入され、その後、構文は

flexmock(sys.modules['path.to.module']).should_receive('function.of.object').and_return(response) 

function.of.objectだろうと言います呼び出されている関数です。たとえば、requests.getです。 getのみを使用すると動作しません。

レスポンスはあなたが模擬しようとするものです。 requests.getの例では、レスポンスはrequests.Response()となり、flexmockが属性を設定する場合は、setattrを使用して属性を設定できます。 (もっと良い方法がありますか?)

関連する問題