2017-10-17 4 views
0

私はユニットテストケースを実行したときに私のフラスコアプリは、私がuwsgiはPythonのモジュールではありません知っている、project.Butにおけるので、私import uwsgiその後Pythonプロジェクトインポートuwsgiユニットテストを行う方法?

Traceback (most recent call last): 
    File "runapp.py", line 55, in <module> 
    import topicservice 
    File "/home/workspace/topic.py", line 36, in <module> 
    import uwsgi 
ImportError: No module named uwsgi 

uwsgi spoolerを使用している、それはバイナリserver.Theアプリの実行でありますuwsgiは "uwsgi"モジュールにアクセスできます。しかし、私のユニットテストにはどんな方法がありますか?

答えて

1

プロジェクト全体で使用されているRPC機能に遭遇しているのと同じ問題が発生しました。その周りに正式な方法はありませんが、私は私のソリューションを共有することができます。

uwsgiモジュールを遅延ロードする別のクラス/関数に目的の機能を抽出する必要があります。 uwsgi.rpcの例:

class RPCSender: 

def __init__(self, host_address): 
    self._host_address = host_address 

def send(self, destination, data): 
    import uwsgi 

    uwsgi.rpc(self._host_address, destination, data) 

... 

local_rpc_sender = RPCSender('192.168.173.100:3031') 
local_rpc_sender.send('myfunc', 'myarg') 

あなたがRPCSenderを使用したモジュールのテストを書くとき、あなたはsendメソッドをモックする必要があります。好ましくはmock.patch.objectを使用することによって。これは単体テストのルールに反するものではありません。テストには何の意味もありません。それはテストが私どもの責任ではない第三者図書館です。意図した通りに動作すると仮定します。

関連する問題