Comment faire pour se moquer d'une partie d'un python constructeur juste pour le test?

Je suis Python, donc je m'excuse si c'est un doublon ou trop simple question. J'ai écrit un coordonnateur de la classe qui appelle deux autres classes qui utilisent la kafka-bibliothèque python pour envoyer/lire des données à partir de Kafka. Je veux écrire un test unitaire pour mon coordonnateur de la classe, mais je vais avoir du mal à déterminer la meilleure façon d'aller à ce sujet. J'espérais que je pourrais faire un autre constructeur que j'ai pu passer mon moqué des objets, mais cela ne semble pas être le travail que j'obtiens une erreur que test_mycoordinator ne peut pas être résolu. Je vais sur le test de cette classe dans le mauvais sens? Est-il un pythonic façon je devrais le tester?

Voici ce que ma classe de test ressemble à ce jour:

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)

Et ici, c'est la classe je suis en train de tester:

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
où edoes mycordinator dans votre setUpModule?
désolé, j'ai eu une faute de frappe quand j'ai changé les noms j'ai édité la question de corriger la déclaration d'importation

OriginalL'auteur jencoston | 2017-04-11