4

Python WebTest を使用した機能テストはまったく初めてです。ご容赦ください。

私はhttps://webtest.readthedocs.org/en/latest/webtest.htmlを見ていましたので、リクエストを行うために提案されたコードを試しました:

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

わかりました、私には十分に単純に見えます。myapp フォルダーに test_demo.py というファイルを作成します。

    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

しかし、それは何の結果も示していません。

何かが間違っているに違いありませんが、ドキュメントはあまり役に立たないか、単に遅いだけです。

4

1 に答える 1

6

おっと、あなたはいくつかのステップを逃しています。

プログラムに何もするように指示しなかったため、プログラムは何もしません。クラスを定義しただけです。それでは、何かをするように伝えましょう。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)

では、テストするアプリが必要です。どこで入手できますか?main通常、 viaで作成しているWSGIアプリが必要になりますconfig.make_wsgi_app()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うまくいけば、それはあなたにパッケージについてもっと学ぶための出発点を与えるでしょう。

于 2013-03-06T16:17:15.387 に答える