我有一个函数,每次我在Flask-RESTFul API中运行测试时都不想运行。这是设置的一个示例:
class function(Resource):
def post(self):
print 'test'
do_action()
return {'success':True}
在我的测试中我想运行此函数,但忽略do_action()。我如何使用pytest实现这一目标?
答案 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 安装(无耻插头)。