diff --git a/nice-scripts/mock_an__init__method_a_class.py b/nice-scripts/mock_an__init__method_a_class.py new file mode 100644 index 0000000..1edd6d9 --- /dev/null +++ b/nice-scripts/mock_an__init__method_a_class.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +#-*- coding:utf-8 -*- +""" +source : https://medium.com/@george.shuklin/mocking-complicated-init-in-python-6ef9850dd202 +""" + + +class Compl(object): + def __init__(self, arg1, arg2): + self.var1 = complicated_to_mock(arg1) + self.var2 = self.var2.complicated_to_mocK2(arg2) + + if self.var1 in self.var2 and self.var1 != self.var2: + self.var3 = self.var2 - self.var1 + ctm3(ctm4()) + + self.foo = { + "1": {"price": "2.7", "quantity": "10"}, + "2": {"price": "8.0", "quantity": "2"}, + } + + def simple(self, arg3): + if arg3 > self.var1: + return None + else: + return arg3 - self.var1 + + +from unittest.mock import patch + +def test_simple_none(): + with patch.object(Compl, "__init__", lambda x, y, z: None): + c = Compl(None, None) + c.var1 = 0 + c.foo = {"foo":"bar", "FOO":"BAR"} + assert c.simple(1) is None + assert [i for i in c.foo.keys()] == ["foo", "FOO"] + +def test_simple_substraction(): + with patch.object(Compl, "__init__", lambda x, y, z: None): + c = Compl(None, None) + c.var1 = 1 + assert c.simple(1) == 0