我需要模拟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库中是否有类似的内容?还是我需要用不同的方法?
尝试类似的事情(没有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库,因为它在我使用的框架中使用。因此,我需要结合这些单元测试,以便与该框架保持一致。
发布于 2020-06-17 09:42:53
与使用夹具不同,您可以显式地在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()https://stackoverflow.com/questions/60017394
复制相似问题