ActionsDockerはじめにこれまで、HTMLとCSSを使って簡単なWebページを構築する方法、GitとGitHubを使ってコードの変更を追跡し、他の人と共同作業するための方法を説明してきました。Pythonプログラミング言語に慣れ、Djangoを使用してWebアプリケーションを作成し始め、Djangoモデルを使用してサイトに情報を保存する方法を学びました。その後、JavaScriptを導入してWebページをよりインタラクティブにする方法を学習し、アニメーションとReactを使用してユーザインターフェイスをさらに改善する方法について説明しました。今日は、より大規模なプロジェクトに取り組む場合のベスト・プラクティスについて説明します。テストソフトウェア開発プロセスの重要な部分の1つは、作成したコードをテストし、すべてが期待通りに動作することを確認することです。このレッスンでは、コードのテスト方法を改善するいくつかの手法について説明します。コマンドを使用することです。なるはずの式が続きます。場合は例外がスローされます。関数をテストするために、このコマンドを組み込む方法を見てみましょう。場合は何も起こりません。Output:"""ですが、結果が間違っている場合は、例外が出力されます。development)の使用を検討することをお勧めします。テスト駆動開発とは、バグを修正するたびに、そのバグをチェックするテストを、変更を加えるたびに実行される一連のテストに追加する開発スタイルです。これにより、プロジェクトの追加機能が既存の機能と干渉しないようにすることができます。次に、もう少し複雑な関数を見て、テストを作成することでエラーを見つける方法を考えてみましょう。いう関数を作成します。関数をテストするために作成した関数を見てみましょう。{expected}")この時点で、Pythonインタプリタに入り、いくつかの値をテストすることができます。False上記の出力から、5と10は素数として正しく識別され、素数ではないことがわかりますが、25は誤って素数として識別されているため、この関数には何か問題があるに違いありません。この機能の問題点を調べる前に、テストを自動化する方法について説明します。これを行う1つの方法は、シェルスクリプトを作成するか、ターミナル上で実行できるスクリプトを作成することです。次の各行は、次の要素で構成されています。ターミナル上で実行してこれらのコマンドを実行できるようになりました。Falseユニットテスト上記の方法を使用してテストを自動的に実行することができたとしても、これらのテストをそれぞれ書き出す必要はありません。ライブラリを使うことができます。関数に対してどのように見えるかを見てみましょう。クラス内の各関数がパターンに従っていることに注意してください。呼び出しで関数が自動的に実行されるために必要です。これは、Pythonクラス内でメソッドを作成する場合の標準です。各関数の最初の行には、3つの引用符で囲まれたdocstringが含まれます。これらは単にコードを読みやすくするためだけのものではありません。テストが実行されると、テストが失敗した場合にコメントがテストの説明として表示されます。いう形式のアサーションが含まれていました。さまざまなアサーションを作成できます。詳細については、こちらのドキュメントを参照してください。次に、これらのテストの結果を確認します。検出された内容に関する有用な情報を提供します。...F.F次に、失敗した各テストに対して、失敗した関数の名前が与えられます。false最後に、実行されたテストの数、実行にかかった時間、失敗したテストの数を確認します。(failures=2)では、関数のバグを修正する方法を見てみましょう。ループでもう1つの番号をテストする必要があります。ループのヘッダーを単純に次のように変更できます。1):ここで、単体テストを使用してテストを再度実行すると、変更によってバグが修正されたことを示す次の出力が得られます。0.000sOKこれらの自動化されたテストは、この機能を最適化すると、さらに便利になります。チェックするという事実を使用したり、FermatやMiller-Rabinの素数判定など、より高度な確率的素数判定テストを使用したりできます。この機能を改善するために変更を加えるたびに、ユニットテストを簡単に再実行して、機能が正しいことを確認する機能が必要になります。Djangoテストでは、Djangoアプリケーションを作成する際に自動テストの概念をどのように適用できるかを見てみましょう。プロジェクトを使用します。出発点が目的地と同じではありません所要時間が0分を超えていますモデルは次のようになります。ファイルが自動的に作成されます。このファイルを最初に開くと、DjangoのTestCaseライブラリが自動的にインポートされていることが分かります。ライブラリーを使用する利点の1つは、テストを実行すると、テスト専用のまったく新しいデータベースが作成されることです。これにより、データベース内の既存のエントリを誤って変更したり削除したりするリスクを回避でき、テスト用に作成したダミーエントリを削除する心配がなくなります。このライブラリを使用するには、まずすべてのモデルをインポートします。クラスを拡張する新しいクラスを作成します。この関数の中に私たちがテストしたい内容を含めていきます。クラスがどのようになるかを説明します。duration=-100)テスト用データベースにいくつかのエントリーがあるので、このクラスにいくつかのテストを実行する関数を追加します。フィールドが正しく機能することを確認しましょう。関数もテストできます。有効な場合に関数がtrueを返すことを確認します。self.assertTrue(f.is_valid_flight())次に、無効な目的地および期間を含むフライトがfalseを返すことを確認します。ライブラリを使用した場合の出力とほとんど同じですが、テスト用データベースの作成と破棄のログも記録されます。返す場合があることがわかります。使用したというミスを犯したことがわかります。有効になるためには、フライト要件の1つだけを満たさなければならないことを意味します。関数を次のように変更します。0次に、より良い結果を得るために再度テストを実行します。'default'...クライアントのテストWebアプリケーションを作成するときには、特定の機能が動作するかどうかだけでなく、個々のWebページが意図したとおりにロードされるかどうかも確認する必要があります。オブジェクトを作成し、そのオブジェクトを使用して要求を作成します。追加する必要があります。TestCaseたとえば、HTTPレスポンスコード200を取得し、フライトがすべてレスポンスのコンテキストに追加されることを確認するテストを追加します。3)同様に、有効なフライトページの有効な応答コードと、存在しないフライトページの無効な応答コードを取得できるかどうかを確認できます。404)最後に、乗客リストと非乗客リストが予想どおりに生成されていることを確認するためのテストをいくつか追加します。1)これで、すべてのテストを一緒に実行して、現時点でエラーがないことを確認できます。'default'...Seleniumこれまでのところ、PythonとDjangoを使って作成したサーバ側のコードをテストすることはできましたが、アプリケーションを構築する際には、クライアント側のコードのテストも作成できるようにしたいと考えています。ページに戻ってテストを作成してみましょう。異なるカウンタページを作成し、カウントを減らすボタンを追加します。</body></html>このコードをテストするには、Webブラウザーを開いて2つのボタンをクリックし、何が起こるかを観察します。シングル・ページのアプリケーションをどんどん大きくしていくと、この作業は非常に退屈になってしまいます。そのため、ブラウザー内テストに役立つフレームワークがいくつか作成されており、そのうちの1つがSeleniumと呼ばれています。Seleniumを使用すると、Pythonでテストファイルを定義して、ユーザがWebブラウザを開いたり、ページに移動したり、ページを操作したりする様子をシミュレートできます。これを行う際のメインツールはWebドライバと呼ばれ、コンピュータ上でWebブラウザを開きます。このライブラリを使用してページの操作を開始する方法を見てみましょう。インストールできます。webdriver.Chrome()上記のコードは、必要な基本的な設定のすべてであるため、Pythonインタプリタを使用することで、さらに興味深い使い方ができるようになりました。URIは、そのリソースを表す一意の文字列です。increase.click()このシミュレーションを使用して、ページの自動テストを作成する方法を見てみましょう。tests.pyを実行すると、ブラウザでシミュレーションが実行され、テストの結果がコンソールに出力されます。コードにバグがあってテストに失敗した場合の例を次に示します。ソフトウェア開発のベスト・プラクティスのセットであり、チームがコードをどのように作成し、そのコードを後でアプリケーションのユーザにどのように配布するかを決定します。名前が示すように、このメソッドは次の2つの主要部分で構成されています。継続的な提供:短いリリーススケジュール。アプリケーションの新しいバージョンが頻繁にリリースされることを意味します。CI/CDがソフトウェア開発チームの間でますます一般的になってきた理由はいくつかあります。異なるチームメンバーが異なるフィーチャで作業している場合、複数のフィーチャを同時に結合すると、多くの互換性の問題が発生する可能性があります。継続的インテグレーションによって、小さなコンフリクトが発生しても、チームはそれに対処することができます。ユニットテストは各マージで実行されるため、テストが失敗したときに、問題の原因となっているコードの部分を切り分けることが容易になります。アプリケーションの新バージョンを頻繁にリリースすることで、問題がローンチ後に発生した場合に、開発者は問題を切り分けることができます。小さな段階的な変更をリリースすることで、ユーザは全く違うバージョンに圧倒されることなく、新しいアプリの機能にゆっくりと慣れることができます。新機能のリリースを待たずに、企業は競争の激しい市場で優位を保つことができます。Actionsがあります。Actionsではワークフローを作成して、誰かがgitリポジトリにプッシュするたびに実行するアクションを指定することができます。スタイルガイドが守られているかどうか、あるいは一連のユニットテストがパスしているかどうかを、プッシュのたびにチェックしたい場合があります。GitHubアクションを設定するために、YAMLという設定言語を使用します。中心にデータを構造化します。簡単なYAMLファイルの例を次に示します。設定例を見てみましょう。ファイルを作成します。このファイルには、次のように記述します。Actionsを使うのはこれが初めてなので、このファイルの各部分が何をしているかを見てみましょう。