2012-10-11 61 views
1

在工作中,我們在選定的測試函數上使用裝飾器@rollback,這將回滾測試期間所做的任何db更改。pytest:在裝飾器中使用依賴注入

我最近開始在幾個使用情況下使用pytest的依賴注入,這兩種情況都使用@pytest.mark.parametrize(...)pytest_funcarg__XXX鉤子。不幸的是,這與我們裝飾的測試功能相沖突。

我該如何做這項工作?

我最初的想法是使用自定義標記,說@pytest.mark.rollback,並完成類似:

def rollback(meth): 
    """Original rollback function""" 
    ... 

def pytest_runtest_setup(item): 
    if not isinstance(item, pytest.Function): 
     return 
    if hasattr(item.obj, 'rollback'): 
     item = rollback(item) 

能否會像這樣的辦法真的有效麼?

回答

0

像這樣的東西應該很好,是的。似乎你正在使用全局狀態來管理你的數據庫,對吧?你可能想簽出即將到來的2.3版本也有一個「辦理」的例子進一步下跌此網頁的文檔:

http://pytest.org/dev/fixture.html

發佈是因爲現在任何時間,則可以安裝帶有「PIP候選安裝-i http://pypi.testrun.org -U pytest「。