簡體   English   中英

使用pytest.fixture選擇退出功能

[英]Using pytest.fixture to opt out of function

我有一個我不想每次在Flask-RESTFul API中運行測試時都運行的函數。 這是設置的示例:

class function(Resource):
    def post(self):
        print 'test'
        do_action()
        return {'success':True}

在我的測試中,我想運行此函數,但忽略do_action()。 我如何使用pytest做到這一點?

這似乎是標記測試的好機會

@pytest.mark.foo_test
class function(Resource):
    def post(self):
        print 'test'
        do_action()
        return {'success':True}

那你打電話給

py.test -v -m foo_test

它將僅運行標記為“ foo_test”的測試

如果您致電

py.test -v -m "not foo_test"

它將運行所有未標記為“ foo_test”的測試

您可以在測試中模擬do_action

def test_post(resource, mocker):
    m = mocker.patch.object(module_with_do_action, 'do_action')
    resource.post()
    assert m.call_count == 1

因此,在此測試中不會調用實際函數,其附加好處是您可以檢查post實現是否實際調用該函數。

這需要安裝pytest-mocker (無恥的插件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM