os.environ.get
을 도우려는 데 어려움을 겪고 있습니다.가져온 클래스의 파이썬에서 조롱하기
가져온 BaseClass가 있습니다. BaseClass 메서드를 sub_class 모듈로 가져올 때 해당 base_class 파일에서 os.environ.get 호출을 조롱하려고합니다.
project.data.base_class.py
from project.data.base_class import BaseClass
class SubClass(BaseClass):
def __init__(self):
def run(self):
return self.get()
import os
class BaseClass(object):
VAR1 = os.environ.get('something')
VAR2 = os.environ.get('something')
def __init__(self):
pass
def get(self):
return BaseClass.VAR1
project.data.sub_class.py
나는 SubClass.run
방법을 테스트 할,하지만 난 조롱하려고 할 때, 나는 바로 모의 os.environ에 대한 설정 얻이 수없는 것 . 여기에 내가 무엇을 시도했다입니다 :
from mock import patch
@patch('base_class.os.environ')
def test_sub_class_run(self, mock_base):
mock_base.get.side_effect = ['var1', 'var2']
from sub_class import sub_class
self.assertEqual(sub_class.SubClass.run(), 'var1')
from mock import patch
및
@patch('sub_class.base_class.os.environ')
def test_sub_class_run(self, mock_base):
mock_base.get.side_effect = ['var1', 'var2']
from sub_class import sub_class
self.assertEqual(sub_class.SubClass.run(), 'var1')
내가 os.environ 사용하고 때이 때문에 기분이, 내가 제대로 조롱하고 있지 않다. 나는 모의 구조를 구성하는 적절한 방법이 무엇인지 모른다고 주장한다. 정확히.
그건 내 의사 코드입니다.
'mock_base.get.side.effect = [ 'var1', 'var2']'를'mock_base.get.side.effect = lambda * args : [ 'var1', 'var2'] '로 대체 해보십시오. –
이 질문이 도움이 될 수 있습니다. http://stackoverflow.com/questions/31582750/python-mock-patch-os-environ-and-return-value?noredirect=1&lq=1 –