2013-03-06 32 views
4

我完全新的與使用Python WebTest的功能測試,請多多包涵與Python WebTest的功能測試

我看着https://webtest.readthedocs.org/en/latest/webtest.html,所以我嘗試了代碼的建議提出請求:

app.get('/path', [params], [headers], [extra_environ], ...) 

好吧,看起來夠簡單了。我創建了一個名爲test_demo.py在MyApp文件夾中的文件:

from webtest import TestApp 

    class MyTests(): 
     def test_admin_login(self): 
      resp = self.TestApp.get('/admin') 
      print (resp.request) 

現在,這是我堅持,我應該怎麼跑這test_demo.py? 我試着打字在bash

$ bin/python MyCart/mycart/test_demo.py test_admin_login 

但它沒有顯示任何結果。

我敢打賭,我得到了一切錯誤,但文檔沒有太大的幫助,或者我只是很慢。

回答

5

哎呀,你錯過了幾個步驟。

你的程序沒有做任何事情,因爲你沒有告訴它做任何事情,你只是定義了一個類。所以讓我們告訴它做些什麼。我們將使用unittest包使事情變得更加自動化。

import unittest 
from webtest import TestApp 

class MyTests(unittest.TestCase): 
    def test_admin_login(self): 
     resp = self.TestApp.get('/admin') 
     print (resp.request) 

if __name__ == '__main__': 
    unittest.main() 

運行的是,我們看到:

E 
====================================================================== 
ERROR: test_admin_login (__main__.MyTests) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "test_foo.py", line 6, in test_admin_login 
    resp = self.TestApp.get('/admin') 
AttributeError: 'MyTests' object has no attribute 'TestApp' 

---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

FAILED (errors=1) 

好了,我們需要一個應用程序來測試。哪裏可以買到?您通常需要通過config.make_wsgi_app()main中創建的WSGI應用程序。最簡單的方法是加載它,就像運行你的應用時的pserve development.ini一樣。我們可以通過pyramid.paster.get_app()來做到這一點。

import unittest 
from pyramid.paster import get_app 
from webtest import TestApp 

class MyTests(unittest.TestCase): 
    def test_admin_login(self): 
     app = get_app('testing.ini') 
     test_app = TestApp(app) 
     resp = test_app.get('/admin') 
     self.assertEqual(resp.status_code, 200) 

if __name__ == '__main__': 
    unittest.main() 

現在所有需要的是一個INI文件,類似於您development.ini,但是出於測試目的。您只需複製development.ini,直到您需要設置任何僅用於測試的設置。

希望能給您一個瞭解關於unittest包的更多信息。

+0

哈哈,真的有很大幫助= D – Gino 2013-03-07 03:04:37

+0

當我試圖運行$ python -m unittest -v test_demo時,出現了一個新錯誤(ImportError:No module named pyramid.paster)。我正在使用python 3.2 – Gino 2013-03-07 03:44:44

+0

使用您安裝金字塔的virtualenv中的python。 – 2013-03-07 04:08:15