2014-04-27 36 views
2

我想將單元測試轉換爲py測試。我使用的單元測試,例如爲sqlalchemy應用程序編寫py測試

class TestCase(unittest.TestCase): 
    def setUp(self): 
     app.config['TESTING'] = True 
     app.config['CSRF_ENABLED'] = False 
     app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 
     'test.db') 
     db.create_all() 

    def tearDown(self): 
     db.session.remove() 
     db.drop_all() 

我不知道,我應該是它的PY測試版本。

回答

0

首先,py.test應該運行現有的unittest測試用例。然而,在py.test做本地的事是用於建立和拆除夾具:

import pytest 

@pytest.fixture 
def some_db(request): 
    app.config['TESTING'] = True 
    app.config['CSRF_ENABLED'] = False 
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'test.db') 
    db.create_all() 
    def fin(): 
     db.session.remove() 
     db.drop_all() 
    request.addfinalizer(fin) 

def test_foo(some_db): 
    pass 

請注意,我不知道SQLAlchemy的想法以及是否有處理它的安裝和拆卸更好的方法。所有這個例子演示瞭如何將setup/teardown方法轉化爲一個fixture。

+0

我得到AttributeError:'function'對象在app.config中沒有屬性'config'['TESTING'] = True。它工作,如果我使用unittest而不是py.test – user3526896

+0

我已經知道你在上面解釋了什麼。我的問題是pytest不認識配置,所以我怎麼能給數據庫網址? – user3526896

+0

錯誤消息意味着「app」是一個函數,而您似乎期望它是其他東西(我猜想Flask類的一個實例)。什麼是應用程序?爲什麼不是你期望的? –

相關問題