In a given unit test function I create 2 requests, each send one email. Even though I'm passing 2 different instances of DummyRequest to get_mailer, the DummyMailer objects returned are the same instance. You can see in my last assert statement it fails because there are 2 emails in the outbox (one created by request1 and the other by request2).
I can do a mailer1.outbox.clear() to get the expected behavior. But is this the right way of doing this? How come get_mailer behaves like this, returning the same instance every time? request1 = testing.DummyRequest(...) views.send_one_email(...) mailer1 = get_mailer(request1) # mailer1.outbox.clear() # Why is this necessary for the last assert below not to fail? request2 = testing.DummyRequest(...) views.send_one_different_email(...) mailer2 = get_mailer(request2) assert request1 is not request2 # Not the same request instances assert mailer1 is mailer2 # It's the same mailer instance assert len(mailer1.outbox) == 1 assert len(mailer2.outbox) == 1 # Fails It works the same if I do it like this, which wouldn't make me think there will be 2 different mailers returned, but in this case what's the purpose of passing a DummyRequest to get_mailer? single_mailer = get_mailer(testing.DummyRequest()) request1 = testing.DummyRequest(...) views.send_one_email(...) request2 = testing.DummyRequest(...) views.send_one_different_email(...) assert request1 is not request2 # Not the same request instances assert len(single_mailer.outbox) == 1 assert len(single_mailer.outbox) == 1 # Fails -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/pylons-discuss. For more options, visit https://groups.google.com/d/optout.
