我有一個函數,我不想每次運行我的Flask-RESTFul API中的測試時都運行。這是設置的例子:使用pytest.fixture退出函數
class function(Resource):
def post(self):
print 'test'
do_action()
return {'success':True}
在我的測試
我要運行這個功能,卻忽略do_action()。我將如何使用pytest做到這一點?
我有一個函數,我不想每次運行我的Flask-RESTFul API中的測試時都運行。這是設置的例子:使用pytest.fixture退出函數
class function(Resource):
def post(self):
print 'test'
do_action()
return {'success':True}
在我的測試
我要運行這個功能,卻忽略do_action()。我將如何使用pytest做到這一點?
這似乎是一個很好的機會,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」
您可以在您的測試嘲笑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至 。
您是否想在某些運行中完全跳過測試。或者你是否希望通過使用'do_action()'運行,然後在沒有運行的情況下運行此測試? – shuttle87
我希望它完全跳過測試。 – Rob
這樣的事情:import pytest @ pytest.fixture(scope =「function」,autouse = True) – Rob