samedi 4 avril 2015

py.test -- mock a constant and raise an exception in test function

I'm using py.test and mock. I have not been able to mock a constant. My test modifies the dict value that is assigned to the constant. This should raise an Exception in my test, but thus far it doesn't. I'm not sure what the problem is and would appreciate any help pinpointing the issue. Thank you.


the_module.py



MY_DICT = {'one': 1, 'two': 2, 'three': 3}

class OneMissingException(Exception):
pass

class Test1(object):
def __init__(self):
self.mydict = MY_DICT

@property
def mydict(self):
return self._mydict

@mydict.setter
def mydict(self, mydict):
if 'one' not in mydict:
raise OneMissingException
self._mydict = mydict


test_themodule.py



import pytest
from unittest import mock
from the_module import Test1, OneMissingException

@pytest.fixture(scope='function')
def my_dict():
return {'one': 1, 'two': 2, 'three': 3}

def test_verify_test1_exception(my_dict):
my_dict.pop('one') # comment this out and test still passes
with mock.patch("the_module.MY_DICT") as mydict:
mydict.return_value.return_value = my_dict
with pytest.raises(OneMissingException):
Test1()

Aucun commentaire:

Enregistrer un commentaire