1
質問は見出しと同じですが、スレッド実行機能をテストするためにselect.selectサンプルをどうやって模擬することができますか? テスト機能はスレッド内で組み込みモジュールをモックする方法
ready = select.select([self.sock], [], [], 5)
TypeError: fileno() returned a non-integer
で失敗し、タイプのプリントは「builtin_function_or_method」テストでそれがある一方で、スレッドのスコープに嘲笑されていないselect.selectのではっきり
種類を提供します。.. (アサートでisinstance)別のモジュールに次のように
import select
import threading
RECEIVE_BYTES = 256
class Bar(threading.Thread):
def __init__(self, sock):
threading.Thread.__init__(self)
self.sock = sock
def run(self):
print type(select.select)
ready = select.select([self.sock],[],[],5)
if ready[0]:
print self.sock.recv(RECEIVE_BYTES)
テストが
回のdef test_run(self):
with patch("select.select"):
select.select.return_value = [True]
mock_sock = MagicMock()
foo = Bar(mock_sock)
assert isinstance(select.select, MagicMock)
foo.start()
テストが鼻
短い答えは、スレッドがwith patch(...)
ブロックを離れる前に終了するのを待つために
foo.join()
を呼び出すことです
awesome thx私の構文の問題を調整します... – studioj