1

vcrpyは Python の記録/再生パッケージです。以下はガイドラインからの一般的な方法です。

class TestCloudAPI(unittest.TestCase):
    def test_get_api_token(self):
        with vcr.use_cassette('fixtures/vcr_cassettes/test_get_api_token.yaml'): 
            # real request and testing

    def test_container_lifecycle(self):
        with vcr.use_cassette('fixtures/vcr_cassettes/test_container_lifecycle.yaml'):

異なるレコード ファイルが必要なため、すべてのメソッドでこれを繰り返す必要があります。

これを次のように単純化するために、どこかに 1 行を含めることは可能ですか。

TEST_CASE_VCR(USE_METHOD_AS_FILENAME)
class TestCloudAPI(unittest.TestCase):
    def test_get_api_token(self):
        # real request and testing
    def test_container_lifecycle(self):
4

3 に答える 3

1

これは、カセット名を完全に省略することにより、vcrpy の新しいバージョンでサポートされるようになりました。ドキュメントから:

VCR.py では、use_cassette 関数へのパス引数を省略できるようになりました。次の両方が合法になりました/動作するはずです

@my_vcr.use_cassette
def my_test_function():
...

どちらの場合も、VCR.py は提供されたテスト関数の名前から生成されたパスを使用します。カセット_ライブラリ_ディレクトリが設定されていない場合、カセットは、テスト関数が宣言されているファイルのディレクトリ内のテスト関数の名前を持つファイルになります。カセット_ライブラリ_ディレクトリが設定されている場合、カセットは、装飾された関数の名前を持つファイルのそのディレクトリに表示されます。

path_transformer および func_path_generator vcr 変数をカスタマイズすることにより、自動命名機構によって生成されたパスを制御することができます。

于 2018-08-29T06:59:00.690 に答える
0

vcrpy-unittestこれは、 --ご想像のとおり-- と の間の統合により、はるかに簡単になりvcrpyますunittest

あなたの例はこれになります:

from vcr_unittest import VCRTestCase

class TestCloudAPI(VCRTestCase):
    def test_get_api_token(self):
        # real request and testing

    def test_container_lifecycle(self):
        # real request and testing

カセットはテストに従って自動的に名前が付けられcassettes、テスト ファイルと一緒にディレクトリに保存されます。たとえば、次の 2 つのファイルが作成されます:cassettes/TestCloudAPI.test_get_api_token.yamlcassettes/TestCloudAPI.test_container_lifecycle.yaml.

ディレクトリと名前付けは、いくつかのメソッドをオーバーライドすることでカスタマイズできます_get_cassette_library_dirが、_get_cassette_nameおそらく必要ではありません。

vcrpy-unittesthttps://github.com/agriffis/vcrpy-unittestの github とhttps://pypi.python.org/pypi/vcrpy-unittestの PyPI にあります。

于 2015-12-09T14:38:50.713 に答える
0

これを行う機能は現在 VCR に組み込まれていませんが、独自の機能を作成できます。 Venmo が作成したデコレータを確認してください。

于 2014-05-12T19:11:10.767 に答える