【发布时间】:2020-02-01 13:36:26
【问题描述】:
我需要模拟 requests 库,因此想使用 requests_mock 库来实现这一点。虽然我想知道在使用 unittest 库时如何为我的测试类创建一个夹具?
我可以用testtools 做到这一点,例如:
import testtools
from requests_mock.contrib import fixture
class MyTestCase(testtools.TestCase):
TEST_URL = 'http://some-not-existing-url.com'
def setUp(self):
super().setUp()
self.requests_mock = self.useFixture(fixture.Fixture())
self.requests_mock.post(self.TEST_URL, status_code='200')
def test_01_method(self):
resp = requests.post(self.TEST_URL)
self.assertEqual('200', resp.status_code)
现在unittest 没有useFixture 方法。 unittest lib 中是否有一些等价物?或者我需要在那里使用一些不同的方法?
尝试类似的事情(没有useFixture,崩溃测试):
import unittest
from requests_mock.contrib import fixture
class MyTestCase(unittest.TestCase):
TEST_URL = 'http://some-not-existing-url.com'
def setUp(self):
super().setUp()
self.requests_mock = fixture.Fixture()
self.requests_mock.post(self.TEST_URL, status_code='200')
def test_01_method(self):
resp = requests.post(self.TEST_URL)
self.assertEqual('200', resp.status_code)
使用unittest 运行,我得到[Errno -2] Name or service not known,这清楚地表明模拟不能正确应用。
附:我需要unittest lib,因为它在我使用的框架中使用。所以我需要合并这些单元测试以与该框架保持一致。
【问题讨论】:
标签: python unit-testing python-requests mocking fixtures