私はPythonを初めて使用しているので、重複しているか、あまりにも簡単な質問であれば謝ります。私はKafka-pythonライブラリを使ってKafkaからデータを送信/読み込む2つのクラスを呼び出すコーディネータークラスを作成しました。私はコーディネータークラスの単体テストを書こうと思っていますが、これについて最善を尽くすにはどうすればいいか分かりません。私は虚偽のオブジェクトを渡すことができる代替のコンストラクタを作ることができることを期待していましたが、test_mycoordinatorを解決できないというエラーが発生したため、これは動作していないようです。このクラスを間違った方法でテストするつもりですか?私はそれをテストする必要がありますpythonic方法はありますか?ここでテストのためだけにPythonコンストラクタの一部を模擬しますか?
は私のテストクラスは、これまでのように見えるものです:
import unittest
from mock import Mock
from mypackage import mycoordinator
class MyTest(unittest.TestCase):
def setUpModule(self):
# Create a mock producer
producer_attributes = ['__init__', 'run', 'stop']
mock_producer = Mock(name='Producer', spec=producer_attributes)
# Create a mock consumer
consumer_attributes = ['__init__', 'run', 'stop']
data_out = [{u'dataObjectID': u'test1'},
{u'dataObjectID': u'test2'},
{u'dataObjectID': u'test3'}]
mock_consumer = Mock(
name='Consumer', spec=consumer_attributes, return_value=data_out)
self.coor = mycoordinator.test_mycoordinator(mock_producer, mock_consumer)
def test_send_data(self):
# Create some data and send it to the producer
count = 0
while count < 3:
count += 1
testName = 'test' + str(count)
self.coor.sendData(testName , None)
そして、ここでは、私がテストしようとしているクラスです。
class MyCoordinator():
def __init__(self):
# Process Command Line Arguments using argparse
...
# Initialize the producer and the consumer
self.myproducer = producer.Producer(self.servers,
self.producer_topic_name)
self.myconsumer = consumer.Consumer(self.servers,
self.consumer_topic_name)
# Constructor used for testing -- DOES NOT WORK
@classmethod
def test_mycoordinator(cls, mock_producer, mock_consumer):
cls.myproducer = mock_producer
cls.myconsumer = mock_consumer
# Send the data to the producer
def sendData(self, data, key):
self.myproducer.run(data, key)
# Receive data from the consumer
def getData(self):
data = self.myconsumer.run()
return data
wher edoes 'mycordinator'はあなたの' setUpModule'から来ますか? – dm03514
@ dm03514申し訳ありませんが、私はインポートステートメントを修正するために質問を編集した名前を変更していたときにタイプミスがありました – jencoston