requests_mock 单元测试库的夹具?
requests_mock fixture with unittest library?
我需要模拟 requests
库,因此想为此使用 requests_mock
库。虽然我想知道如何在使用 unittest
库时为我的测试 class 创建夹具?
我可以用 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
库中是否有一些等价物?或者我需要在那里使用一些不同的方法?
正在尝试类似的事情(没有 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
,这清楚地表明模拟没有正确应用。
P.S。我需要 unittest
lib,因为它在我使用的框架中使用。所以我需要合并这些单元测试以与该框架保持一致。
您可以在 setUp
中显式启动模拟并在 tearDown
中停止它,而不是使用夹具。
例如:
import unittest
import requests_mock
import requests
class MyTestCase(unittest.TestCase):
TEST_URL = 'http://some-not-existing-url.com'
def setUp(self):
super().setUp()
self.requests_mock = requests_mock.Mocker()
self.requests_mock.post(self.TEST_URL, status_code='200')
self.requests_mock.start()
def test_01_method(self):
resp = requests.post(self.TEST_URL)
self.assertEqual('200', resp.status_code)
def tearDown(self):
super().tearDown()
self.requests_mock.stop()
我需要模拟 requests
库,因此想为此使用 requests_mock
库。虽然我想知道如何在使用 unittest
库时为我的测试 class 创建夹具?
我可以用 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
库中是否有一些等价物?或者我需要在那里使用一些不同的方法?
正在尝试类似的事情(没有 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
,这清楚地表明模拟没有正确应用。
P.S。我需要 unittest
lib,因为它在我使用的框架中使用。所以我需要合并这些单元测试以与该框架保持一致。
您可以在 setUp
中显式启动模拟并在 tearDown
中停止它,而不是使用夹具。
例如:
import unittest
import requests_mock
import requests
class MyTestCase(unittest.TestCase):
TEST_URL = 'http://some-not-existing-url.com'
def setUp(self):
super().setUp()
self.requests_mock = requests_mock.Mocker()
self.requests_mock.post(self.TEST_URL, status_code='200')
self.requests_mock.start()
def test_01_method(self):
resp = requests.post(self.TEST_URL)
self.assertEqual('200', resp.status_code)
def tearDown(self):
super().tearDown()
self.requests_mock.stop()