ホームページ  >  記事  >  バックエンド開発  >  # Jest から Pytest へ: JavaScript 開発者の Python テストへの旅

# Jest から Pytest へ: JavaScript 開発者の Python テストへの旅

Barbara Streisand
Barbara Streisandオリジナル
2024-11-17 09:25:03110ブラウズ

# From Jest to Pytest: A JavaScript Developer

Jest から Pytest へ: JavaScript 開発者の Python テストへの旅

私は JavaScript のバックグラウンドを持つ開発者として、Jest を使用したテストの作成にかなりの時間を費やしてきました。私のプロジェクト gimme_readme では、サードパーティの npm モジュールを使用していたため、Node と Jest を使用して実験的な機能をいくつか試す必要がありました。 ES6 構文を使用する場合に Jest テストを実行する方法を教えてくれる素晴らしい Stack Overflow スレッドを見つけることができました。これらの賢い人々の知恵がなければ、私は苦労していたと言っておきましょう。しかし、Jest の実験的機能の使用方法に関するこの知識を武器に、次のことが可能になりました。

  1. (奇妙な設定にもかかわらず) Jest でテストを作成します
  2. 非常に早い段階で CI パイプラインをセットアップします。これは次のように設定されています。
    1. コードを lint する (つまり、将来的に問題が発生する可能性がある、または現状でバグを引き起こす可能性のあるコード行がないかチェックします)
    2. ソース コードをテストします (つまり、ソース コードがどのように機能するかを説明するために作成したテストを実行します)。

上で説明した CI パイプラインのコードはここにあり、ブランチへのプッシュが行われるたび、またはプル リクエストがあるときに実行されるように設定されています。こうすることで、私のリポジトリに貢献しようとしている人は誰でも、少なくとも自動テストに関する限り、自分が貢献したコードが私のメイン ブランチにマージするのに「十分に適している」かどうかを知ることができます。

とにかく、私が昔、私のリポジトリに対して行った作業については十分です。

今週、私は友人の Aryan Khurana が書いた Python プロジェクトのテストを書くことに挑戦することにしました。 Aryan のプロジェクトは、GitHub リポジトリに関する洞察を提供する github-echo と呼ばれるコマンドライン ツールです。なじみのない言語を使用し、これまで使用したことのないテスト フレームワーク (PyTest) は明らかに私の快適ゾーン外でしたが、Aryan が喜んでコツを教えてくれたことに本当に感謝しました (Aryan に感謝!)。

pytest を使用して Python コードをテストする

Aryan のリポジトリのテストに取り組み始めたとき、テストの見た目の違いにすぐに圧倒されました。 Jest は私にとって馴染みのある領域になりましたが、Python の pytest は非常に異質なものに感じられました。それにも関わらず、アーリアンの指導と決意のおかげで、私はその独特の特徴を理解し始めました。

テストケースで私が発見したことを詳しく見てみましょう:

パラメータ化されたテスト: 私の目を引いた最初のものの 1 つは、@pytest.mark.parametrize デコレーターでした。これは Jest の test.each に似ていますが、構文がより明確になっています。

   @pytest.mark.parametrize(
       'invalid_url',
       [
           'https://gitlab.com/username/repository',
           'https://github.com/username',
           # ... more test cases
       ],
   )

コンテキスト マネージャー: Jest の Expect().toThrow() の代わりに、Python は pytest.raises:
でコンテキスト マネージャーを使用します。

   @pytest.mark.parametrize(
       'invalid_url',
       [
           'https://gitlab.com/username/repository',
           'https://github.com/username',
           # ... more test cases
       ],
   )

一時ファイル システム: テストでは、ファイル システム操作に pytest の tmp_path フィクスチャを使用します。これは、Jest でモック ファイル システムをセットアップするよりもはるかにクリーンです:

   with pytest.raises(typer.BadParameter, match='Invalid GitHub repository URL'):
      check_cli_arguments(invalid_url, 'gemini', 0.5, Path('output.md'))

最終的な考え

JavaScript と Python の両方のテスト フレームワークを使用した経験により、ソフトウェア テストに対する私の視野が広がりました。 Jest はホームテリトリーのように感じられましたが、私はパラメータ化されたテストやフィクスチャなどの pytest の強力な機能を高く評価するようになりました。 JavaScript テストを作成する場合でも、Python テストを作成する場合でも、最終目標は変わりません。それは、信頼性が高く、十分にテストされたコードをユーザーに提供することです。

以上が# Jest から Pytest へ: JavaScript 開発者の Python テストへの旅の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。