首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有统一库的requests_mock夹具?

有统一库的requests_mock夹具?
EN

Stack Overflow用户
提问于 2020-02-01 13:36:26
回答 1查看 463关注 0票数 1

我需要模拟requests库,因此应该使用requests_mock库。虽然我想知道如何在使用unittest库时为我的测试类创建一个夹具?

我可以用testtools做这件事,比如:

代码语言:javascript
复制
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,崩溃测试):

代码语言:javascript
复制
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库,因为它在我使用的框架中使用。因此,我需要结合这些单元测试,以便与该框架保持一致。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-17 09:42:53

与使用夹具不同,您可以显式地在setUp中启动模拟,并在tearDown中停止它。

例如:

代码语言:javascript
复制
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()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60017394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档