Created
October 12, 2016 03:22
-
-
Save podhmo/c1f1c562149b1dd9b7bd619c31c48654 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import unittest | |
try: | |
import mock # python 2.7 | |
except ImportError: | |
from unittest import mock | |
class MockFactory: | |
def __init__(self): | |
self.mocks = [] | |
def __call__(self, **kwargs): | |
m = mock.Mock() | |
for k, v in kwargs.items(): | |
setattr(m, k, v) | |
self.mocks.append(m) | |
return m | |
class Tests(unittest.TestCase): | |
@mock.patch("services.Foo", new_callable=MockFactory) | |
def test_foo_it1(self, mf): | |
from services import foo_service1 | |
foo_service1() | |
foo = mf.mocks[0] | |
self.assertEqual(foo.name, "foo name") | |
self.assertEqual(foo.desc, "foo desc") | |
foo.save.assert_called_once_with() | |
@mock.patch("services.Foo", new_callable=MockFactory) | |
def test_foo_it2(self, mf): | |
from services import foo_service2 | |
foo_service2() | |
foo = mf.mocks[0] | |
self.assertEqual(foo.name, "foo name") | |
self.assertEqual(foo.desc, "foo desc") | |
foo.save.assert_called_once_with() | |
@mock.patch("services.Foo", new_callable=MockFactory) | |
def test_foo_it3(self, mf): | |
from services import foo_service3 | |
foo_service3() | |
foo = mf.mocks[0] | |
self.assertEqual(foo.name, "foo name") | |
self.assertEqual(foo.desc, "foo desc") | |
foo.save.assert_called_once_with() | |
if __name__ == "__main__": | |
unittest.main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Foo(object): | |
def __init__(self, **kwargs): | |
if "name" in kwargs: | |
self.name = kwargs["name"] | |
else: | |
self.name = None | |
if "desc" in kwargs: | |
self.desc = kwargs["desc"] | |
else: | |
self.desc = None | |
self.saved = False | |
def save(self): | |
print("saved. name={0}, desc={1}".format(self.name, self.desc)) | |
self.saved = True |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from models import Foo | |
def foo_service1(): | |
foo = Foo(name="foo name") | |
foo.desc = "foo desc" | |
foo.save() | |
def foo_service2(): | |
foo = Foo(desc="foo desc") | |
foo.name = "foo name" | |
foo.save() | |
def foo_service3(): | |
foo = Foo() | |
foo.name = "foo name" | |
foo.desc = "foo desc" | |
foo.save() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment