Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jsonschemaでaudio_queryのレスポンスのバリデーションをしました。 #739

Closed
wants to merge 3 commits into from

Conversation

stmtk1
Copy link
Contributor

@stmtk1 stmtk1 commented Aug 28, 2023

内容

  • jsonschemaを使ってaudio_queryのe2eテストを実装しました。
  • pytestのバージョンをあげました。

関連 Issue

ref #730

スクリーンショット・動画など

その他

@stmtk1 stmtk1 requested a review from a team as a code owner August 28, 2023 14:58
@stmtk1 stmtk1 requested review from Hiroshiba and removed request for a team August 28, 2023 14:58
@github-actions
Copy link

Coverage Result

Resultを開く
Name Stmts Miss Cover
run.py 433 280 coverage-35%
voicevox_engine/init.py 1 0 coverage-100%
voicevox_engine/acoustic_feature_extractor.py 75 0 coverage-100%
voicevox_engine/cancellable_engine.py 85 66 coverage-22%
voicevox_engine/dev/core/init.py 2 0 coverage-100%
voicevox_engine/dev/core/mock.py 27 12 coverage-56%
voicevox_engine/dev/synthesis_engine/init.py 2 0 coverage-100%
voicevox_engine/dev/synthesis_engine/mock.py 36 2 coverage-94%
voicevox_engine/downloadable_library.py 93 5 coverage-95%
voicevox_engine/engine_manifest/EngineManifest.py 34 0 coverage-100%
voicevox_engine/engine_manifest/EngineManifestLoader.py 12 0 coverage-100%
voicevox_engine/engine_manifest/init.py 3 0 coverage-100%
voicevox_engine/full_context_label.py 162 3 coverage-98%
voicevox_engine/kana_parser.py 86 1 coverage-99%
voicevox_engine/metas/Metas.py 33 0 coverage-100%
voicevox_engine/metas/MetasStore.py 29 12 coverage-59%
voicevox_engine/metas/init.py 2 0 coverage-100%
voicevox_engine/model.py 160 9 coverage-94%
voicevox_engine/mora_list.py 4 0 coverage-100%
voicevox_engine/morphing.py 70 46 coverage-34%
voicevox_engine/part_of_speech_data.py 5 0 coverage-100%
voicevox_engine/preset/Preset.py 12 0 coverage-100%
voicevox_engine/preset/PresetError.py 2 0 coverage-100%
voicevox_engine/preset/PresetManager.py 81 2 coverage-98%
voicevox_engine/preset/init.py 4 0 coverage-100%
voicevox_engine/setting/Setting.py 11 0 coverage-100%
voicevox_engine/setting/SettingLoader.py 19 0 coverage-100%
voicevox_engine/setting/init.py 3 0 coverage-100%
voicevox_engine/synthesis_engine/init.py 5 0 coverage-100%
voicevox_engine/synthesis_engine/core_wrapper.py 201 146 coverage-27%
voicevox_engine/synthesis_engine/make_synthesis_engines.py 59 30 coverage-49%
voicevox_engine/synthesis_engine/synthesis_engine.py 130 11 coverage-92%
voicevox_engine/synthesis_engine/synthesis_engine_base.py 67 9 coverage-87%
voicevox_engine/user_dict.py 144 11 coverage-92%
voicevox_engine/utility/init.py 5 0 coverage-100%
voicevox_engine/utility/connect_base64_waves.py 37 0 coverage-100%
voicevox_engine/utility/core_version_utility.py 8 1 coverage-88%
voicevox_engine/utility/mutex_utility.py 10 0 coverage-100%
voicevox_engine/utility/path_utility.py 26 8 coverage-69%
TOTAL 2178 654 coverage-70%

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

スキーマのバリデーションをするの良いですね!!

FastAPIは内部でpydanticというのを使っていて、Pythonの型サポートの恩恵を受けつつスキーマを書けるので便利かもです。
AudioQueryのVOICEVOXでの定義はここにあります。

class AudioQuery(BaseModel):

またpydanticはparase_objでvalidateっぽいこともできそうです。
なので今回のコードはこんな感じでも書けるかも?

from generate_test_client import client

from voicevox_engine.model import AudioQuery


def test_fetch_version_success():
    response = client.post("/audio_query?text=こんにちは&speaker=0")
    assert response.status_code == 200

    AudioQuery.parse_obj(response.json())

from jsonschema import validate


def test_fetch_version_success():
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

関数名を変え忘れているかもです

Copy link
Contributor

@tarepan tarepan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 機能性を担保するe2eテストの導入により開発の安全性が向上しています。good work!

@Hiroshiba
後続の #967 にて同様の e2e テストが導入されたため、このPRは歴史的役割を終えたかと思います。
close が適切そうです。

@Hiroshiba
Copy link
Member

@tarepan そうかもしれません。

@stmtk1 さんありがとうございました!! もしよかったらまたプルリクエストに挑戦してみていただけると・・・!!

@Hiroshiba Hiroshiba closed this Feb 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants