0

私はPythonテストが初めてなので、明白な情報を提供することを躊躇しないでください.

基本的に、私は Python を使用していくつかの RESTful テストを行いたいと思っており、httpretty と確かなライブラリが非常に見栄えがすることを発見しました。

次を含むpythonファイルがあります。

#!/usr/bin/python
from sure import expect
import requests, httpretty

@httpretty.activate 
def RestTest():
    httpretty.register_uri(httpretty.GET, "http://localhost:8090/test.json",
                           body='{"status": "ok"}',
                           content_type="application/json")

    response = requests.get("http://localhost:8090/test.json")
    expect(response.json()).to.equal({"status": "ok"}

これは、 https://github.com/gabrielfalcao/HTTPrettyで提供されているサンプル コードと基本的に同じです。

私の質問は; このテストを実行して、合格または不合格を確認するにはどうすればよいですか? を使用して実行しようとしまし./pythonFileたが、うまくいきません。

4

2 に答える 2

2

テストが Python 関数として実装されている場合、もちろん、単純にファイルを実行しようとしてもテストは実行されません。そのファイルでは実際に を呼び出すものはありませんRestTest

テストを呼び出して結果を照合する何らかのテスト フレームワークが必要です。

そのような解決策の 1 つがpython-noseで、名前付きのメソッドを探してtest_*実行します。したがって、名前を に変更RestTestする場合はtest_rest、次を実行できます。

$ nosetests myfile.py
.
----------------------------------------------------------------------
Ran 1 test in 0.012s

OK

このnosetestsコマンドには、実行するテスト、エラーの処理および報告方法などを制御するさまざまなオプションがあります。

Python 3 には同様の機能がunittestモジュールに含まれており、Python 2 のバックポートとしても利用できますunittest2。コードを変更して、次のunittestように利用できます。

#!/usr/bin/python
from sure import expect
import requests, httpretty
import unittest

class RestTest(unittest.TestCase):
    @httpretty.activate 
    def test_rest(self):
        httpretty.register_uri(httpretty.GET, "http://localhost:8090/test.json",
                               body='{"status": "ok"}',
                               content_type="application/json")

        response = requests.get("http://localhost:8090/test.json")
        expect(response.json()).to.equal({"status": "ok"})

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

ファイルを実行すると、次のような出力が得られ nosetestsます。

$ python myfile.py
.
----------------------------------------------------------------------
Ran 1 test in 0.012s

OK
于 2015-03-11T03:12:23.007 に答える
-1

メソッドを呼び出してみましたか?

または、アノテーションは、メソッドを明示的に呼び出す必要がないことを意味しますか?

あなたのメソッドを呼び出すと、うまくいくようです。期待値の片側の値を変更すると、値が一致しないことについて適切に文句を言います。

于 2015-03-11T03:10:16.193 に答える