私はこれに似ているような状況があります。requests_mockを使用して正しいセッションが確実に呼び出されるようにするにはどうすればよいですか?
import unittest
import requests_mock
import requests
import mock
class ClassUnderTest:
def __init__(self):
self.session = requests.Session()
self.foo_url = 'http://google.com'
def do_foo(self):
return self.session.get(self.foo_url)
def do_foo_failing(self):
# I want to prevent accidentally doing this sort of operation
# instead of reusuing self.session
return requests.get(self.foo_url)
を、私は、メソッドが正しく実行することを確認するには、だけでなく、私はself.session
オブジェクトを使用しています確認してください。実際には同じセッションを再利用する代わりにrequests.get
コールを誤って追加したため、この問題が発生しました。
しかし、これは、このようなテストは、実際にこの機能をテストしていない意味:
class TestClassUnderTest(unittest.TestCase):
@requests_mock.mock()
def test_do_foo_should_pass(self, m):
c = ClassUnderTest()
m.get('http://google.com', status_code=200)
r = c.do_foo()
self.assertEqual(200, r.status_code)
self.assertEqual(m.call_count, 1)
@requests_mock.mock()
def test_do_foo_should_fail(self, m):
c = ClassUnderTest()
m.get('http://google.com', status_code=200)
r = c.do_foo_failing()
self.assertEqual(200, r.status_code)
self.assertEqual(m.call_count, 1)
私はモックでself.session
の交換について考えているが、その後、私はまた、モックに設定STATUS_CODEようなことをしなければならない(と私の実際のコード例では、応答を消費するコードが正しく機能するように、モック.json()
methodを追加する必要もあります)。
requests_mockを使用してself.session
(この例ではrequests.get
ではない)だけを効果的に使用する方法がありますか?