使用pytest.fixture选择退出函数

时间:2015-12-01 22:05:33

标签: python pytest

我有一个函数,每次我在Flask-RESTFul API中运行测试时都不想运行。这是设置的一个示例:

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

在我的测试中我想运行此函数,但忽略do_action()。我如何使用pytest实现这一目标?

2 个答案:

答案 0 :(得分:1)

这似乎是mark测试的好机会

@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”的所有测试

答案 1 :(得分:1)

您可以在测试中模拟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 安装(无耻插头)。