python 테스트에서 Mock 사용 방법
Mock 개념
mock의 뜻은 시뮬레이션, 즉 시뮬레이션 인터페이스가 되돌아오는 정보를 기존의 정보로 대체하여 의존하는 모듈에 대한 테스트를 실현하는 것이다.
일반적으로 두 가지 장면이 있습니다.
테스트 인원에 대해 인터페이스 테스트를 할 때 일부 인터페이스는 아직 개발이 완료되지 않았으며 인터페이스 정의를 약정한 후에도 Mock을 사용하여 시뮬레이션할 수 있다.
python3에서X에서 Mock 모듈이 unittest에 통합되었습니다.
Mock 클래스
class Mock(spec=None,side_effect=None,return_value=DEFAULT,name=None)
간단한 예로 Mock의 기능 특징을 체험해 보세요.
from unittest import mock
def add(num1,num2):
return num1 + num2 # pass
add = mock.Mock(return_value=200) # mock
print( add(10,20) )
입력한 매개 변수가 무엇이든지 출력 결과는 200이라는 것을 알게 될 것이다.방법이 Mock에 의해 차단되어 처리된 것과 같다.비교적 공식적인 Mock 예
정상:
import requests
def request_scm():
# res = requests.get('http://www.mysx-scm.com')
res = requests.get('http://baidu.com')
return res.status_code
import unittest
from unittest import mock
class TestScmApi(unittest.TestCase):
def testUrl(self):
# request_scm = mock.Mock(return_value=200)
self.assertEqual(request_scm(), 200, msg='testUrl ')
if __name__ == '__main__':
unittest.main()
두 개의 # 주석을 다음 문장으로 옮길 수 있습니다.완전한 테스트 예
import requests
class scmapi():
def request_scm():
res = requests.get('http://www.mysx-scm.com')
# res = requests.get('http://baidu.com')
return res.status_code
def pay_alipay():
'''
return 200
'''
return 0
import unittest
from unittest import mock
class TestScmApi(unittest.TestCase):
needmock = True
def setUpClass():
print("setUpClass(): ")
def tearDownClass():
print("tearDownClass(): ")
def setUp(self):
self.scmapi = scmapi()
print("setUp(): ")
def tearDown(self):
print("teardown(): ")
def test_request_scm(self):
if self.needmock:
scmapi.request_scm = mock.Mock(return_value=200)
self.assertEqual(scmapi.request_scm(), 200, msg='test_request_scm ')
def test_pay_alipay(self):
if self.needmock:
scmapi.pay_alipay = mock.Mock(return_value=200)
self.assertEqual(scmapi.pay_alipay(), 200, msg='test_pay_alipay ')
if __name__ == '__main__':
unittest.main()
단언 방법
기본적인 단언 방법은 테스트 결과가 True인지 False인지 제공했다.모든 단언 방법은 msg 매개 변수가 있습니다. msg 매개 변수의 값을 지정하면 이 정보를 실패한 오류 정보로 되돌려줍니다.
번호
단언 방법
단언 설명
일
assertEqual(arg1, arg2, msg=None)
검증arg1=arg2, 부등칙fail
이
assertNotEqual(arg1, arg2, msg=None)
arg1 확인!=arg2, 같다면 fail
삼
assertTrue(expr, msg=None)
검증 expr은true,false라면fail
사
assertFalse(expr,msg=None)
검증 expr은false,true라면fail
오
assertIs(arg1, arg2, msg=None)
arg1,arg2가 같은 대상인지 확인하지 않으면fail
육
assertIsNot(arg1, arg2, msg=None)
arg1,arg2가 같은 대상이 아님을 검증하고fail
칠
assertIsNone(expr, msg=None)
expr이 None인지 아닌지 확인하려면 fail
팔
assertIsNotNone(expr, msg=None)
expr이 None이 아님을 확인하려면 fail
구
assertIn(arg1, arg2, msg=None)
arg1이arg2의 하위 문자열인지 확인하고fail
십
assertNotIn(arg1, arg2, msg=None)
arg1이arg2의 하위 문자열이 아님을 검증하고fail
십일
assertIsInstance(obj, cls, msg=None)
obj가 cls의 실례임을 검증합니다. 아니면fail
십이
assertNotIsInstance(obj, cls, msg=None)
obj가cls의 실례가 아님을 검증하는 것은fail
이상은python이 테스트에서 Mock을 어떻게 사용하는지에 대한 상세한 내용입니다. 더 많은 python 테스트에서 Mock을 사용하는지에 대한 자료는 저희 다른 관련 글에 주목하세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.