例としてDjangoプロジェクトを取り上げます。この記事では、単体テストを最初から作成する方法を簡単に説明します。

序文

テストピラミッドでは、単体テストはピラミッドの下部にあり、最大の割合を占めています。それは速く走り、問題をより速く見つけて見つけます。そして、十分なカバレッジを備えた単体テストが確立されると、リリースの信頼性が大幅に向上します。

ステップ

ユニット、インターフェイス、またはUIに関係なく、テスト手順は通常、次の3つの手順に分けられます。

テストデータの準備:特定の条件を満たす必要のあるユーザーまたはコースを作成し、完了後にいくつかの処理を行って、テストする必要のあるシナリオを満たします。

たとえば、払い戻し機能をテストする必要がある場合は、最初にユーザー、コース、およびユーザーが購入したコースに関するデータを作成する必要があります。

テストが必要なメソッドを呼び出します。

アサーション:ステップ2で返された結果を取得し、テストの結果を判断します。

データの準備

Djangoプロジェクトでは、Djangoのモデルに基づいてデータを作成できるFactoryBoyを使用することをお勧めします。サンプルコードは次のとおりです。

ここに画像の説明を挿入します
それはあなたが彼に与えたモデルに基づいてデータを作成します。モデルでデフォルト値が設定されていないフィールドは、コードで割り当てる必要があります。テストコードでUserFactory()またはUserFactory.create()を呼び出すと、データベースにjohnという名前のユーザーが作成されます。もちろん、毎回同じ名前のユーザーを作成したくない場合もあります。したがって、次のようにコードを変更できます
ここに画像の説明を挿入します
。UserFactoryが呼び出されるたびに、ユーザー名がrobot1からrobotNにインクリメントされるようにします。作成する必要のあるデータには外部キーが含まれていることがよくあります。ユーザーが試験にサインアップするテストシナリオを想定すると、この状況には通常、ユーザーテーブル、試験テーブル、登録レコードフォームの3つのテーブルが含まれます。ユーザー登録情報を保存します。 、試験とユーザーは外部キーです。これに対応して、テスト時にUserFactory、ExamFactory、EnrollFactoryの3つのファクトリを作成する必要があります。EnrollFactoryを作成するために必要なSubFactoryコードは、おおよそ次のとおりです。
ここに画像の説明を挿入します
このように、UserFactoryが呼び出されるたびに、ユーザー名はrobot1からrobotNにインクリメントされます。作成する必要のあるデータには外部キーが含まれていることがよくあります。ユーザーが試験にサインアップするテストシナリオを想定すると、この状況には通常、ユーザーテーブル、試験テーブル、登録レコードフォームの3つのテーブルが含まれます。ユーザー登録情報を保存します。 、試験とユーザーは外部キーです。これに対応して、テスト時にUserFactory、ExamFactory、EnrollFactoryの3つのファクトリを作成する必要があります。EnrollFactoryを作成するときに使用する必要のあるSubFactoryコードは、おおまかに次のとおりです。
ここに画像の説明を挿入します
したがって、EnrollFactoryが呼び出されると、最初にUserFactoryとExamFactoryが作成されます。

メソッド呼び出し

単体テストのテストの焦点は、特定の方法が正しいかどうかであることが多く、さまざまなモジュールの相互作用を気にしません。モックは通常、他のモジュールの戻りをシミュレートするために使用されます。または、ある種の例外を意図的に作成する必要があり、モックメソッドを使用する必要がある場合もあります。通常、return_value、side_effectなどを使用できます。以下は、いくつかの一般的なメソッドの擬似コードです。
ここに画像の説明を挿入します
アサーション

unittestのTestCaseオブジェクトには、使用できる多くのassertメソッドがあります。一般的に使用されるメソッドは、assertTrue、assertFalse、assertEqual、assertRaisesです。以下は擬似コードの例です:
ここに画像の説明を挿入します
サンプル

一般的な単体テストは次のとおりです。
ここに画像の説明を挿入します
カバレッジ

いくつかのユニットテストを書いた後、あなたはしばしばカバレッジに注意を払う必要があります。各言語には、統計カバレッジ用のパッケージがいくつかあります。カバレッジはDjangoで使用できます。カバレッジレポートがない場合は、djangoでテストを実行して以下を実行します。

ここに画像の説明を挿入します

カバレッジをテストする必要がある場合は、次を実行します。
ここに画像の説明を挿入します
このように、テストを実行する過程で、カバレッジ情報を記録するために現在のディレクトリに.coverageファイルが生成されます。もちろん、このファイルを読み取ることはできません。直接。xmlまたはhtml形式を生成するコマンドも必要です。カバレッジレポート。
ここに画像の説明を挿入します
実行後、coverage.xmlファイルが現在のフォルダーに生成され、その後の表示に使用できます。

総括する

この記事では、主に単体テストを行う際の一般的な手順を要約すると同時に、Djangoプロジェクトで単体テストに使用する必要のあるいくつかのパッケージを簡単に紹介します。単体テストを始めたばかりの学生に役立つことを願っています。

3.おわりに

冬も春も来ません。2020年は世界中の人々にとって特別な年でした。誰もが勇敢にそして勇敢に流行と戦っています。ここで私たちは一緒に励まします。良い目標を設定し、成長し続けます。

ここでは、私が自分で作成したソフトウェアテスト交換グループqq:642830685をお勧めします。このグループは、ソフトウェアテストリソース、テストインタビューの質問、業界情報を随時共有します。グループ内で積極的にテクノロジーを交換できます。

あなたと私が会い、あなたが何かを見つけることができますように!WeChatパブリックアカウントをフォローすることを歓迎します:Yuan Yifei、次のハードコアリソースはあなたのものです。

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_54696666/article/details/113956570