テスト自動化を整理する新しい方法としてのページ トランザクション
写真提供: マテウス・カンポス・フェリペ
鮮やかな緋トキ ( Eudocimus rober ) は、アカトキとしても知られ、Threskiornithidae 鳥科の印象的なメンバーです。 この熱帯の鳥類は、南アメリカとカリブ海の一部の風景を美しく飾ります。 その形態は他のトキ種に似ていますが、その鮮やかな緋色の羽がそれを際立たせています。 国家の誇りの象徴であるこの鳥は、トリニダード トバゴの 2 つの国鳥のうちの 1 つであり、そのトゥピ・グアラニー語の名前「グアラ」は、ブラジルのいくつかの沿岸自治体の名前にも組み込まれています。
Guará: ページ トランザクション パターンの Python 実装
Guará は Python ライブラリであり、ページ トランザクションのデザイン パターンを具体化しています。 これはツールというよりも、Linux、Windows、モバイル オートメーションを含む、Selenium を超えたさまざまなオートメーション ドライバーに適用できる柔軟なプログラミング パラダイムです。
このパターンの主な目的は、テストの自動化を合理化することです。 ページ オブジェクト、アプリ アクション、およびスクリーンプレイからインスピレーションを得た Guará は、アプリケーション内のユーザー アクション (トランザクション)、つまりログイン、ログアウト、フォームの送信などのアクションを中心にしています。
このアプローチは、新しいツールや複雑な抽象化を必要とせずに、自動テスト コードの読みやすさ、保守性、適応性を強化します。 主な利点は、ドライバーに依存しない性質です。テスターは Selenium の使用に拘束されません。 Guará は、Helium、Dogtail、PRA Python、Playwright、または任意の優先ドライバーとシームレスに統合します。追加のプラグインや専門知識は必要ありません。
繰り返します: Guará はページ トランザクション デザイン パターンの Python 実装であり、スタンドアロン ツールよりもパターンを優先します。
Guará は、コマンド パターン (GoF) を利用して、ユーザー インタラクション (ボタンの押下、テキスト入力) をトランザクションにバンドルします。 フレームワークと呼ばれていますが、新しいツールではありません。
Guará は、個々の UI 要素に焦点を当てるのではなく、ユーザーのジャーニーを強調します。 複雑さはトランザクション内にカプセル化され、その結果、自然言語のように読めるテスト ステートメントが生成されます。 テスターはカスタム アサーションを作成して統合することもできます。
Guará の動作: 言語切り替えの例
この例は、ユーザーが Web ページ上で言語を切り替える例を示しています:
from selenium import webdriver from guara.transaction import Application from guara import it, setup import home def test_language_switch(): app = Application(webdriver.Chrome()) # Open the application app.at(setup.OpenApp, url="https://example.com/") # Change language and assert app.at(home.ChangeToPortuguese).asserts(it.IsEqualTo, "Conteúdo em Português") app.at(home.ChangeToEnglish).asserts(it.IsEqualTo, "Content in English") # Close the application app.at(setup.CloseApp)
各トランザクションは独自のクラス (例: ChangeToPortuguese
) に存在し、AbstractTransaction
を拡張します。 テスターは単に do
メソッドをオーバーライドするだけです。残りは Guará が担当します。
from guara.transaction import AbstractTransaction class ChangeToPortuguese(AbstractTransaction): def do(self, **kwargs): self._driver.find_element(By.CSS_SELECTOR, ".btn-pt").click() return self._driver.find_element(By.CSS_SELECTOR, ".content").text
テスト後のログにはトランザクションとアサーションが表示されます:
<code>test_demo.py::test_language_switch 2025-01-24 21:07:10 INFO Transaction: setup.OpenApp 2025-01-24 21:07:10 INFO url: https://example.com/ 2025-01-24 21:07:14 INFO Transaction: home.ChangeToPortuguese 2025-01-24 21:07:14 INFO Assertion: IsEqualTo 2025-01-24 21:07:14 INFO Actual Data: Conteúdo em Português 2025-01-24 21:07:14 INFO Expected: Conteúdo em Português 2025-01-24 21:07:14 INFO Transaction: home.ChangeToEnglish 2025-01-24 21:07:14 INFO Assertion: IsEqualTo 2025-01-24 21:07:14 INFO Actual Data: Content in English 2025-01-24 21:07:14 INFO Expected: Content in English 2025-01-24 21:07:14 INFO Transaction: setup.CloseApp</code>
フィクスチャ (セットアップ/ティアダウン) は、テストの初期化と完了を管理します。 pytest や Unittesting などの標準テスト ツールは完全な互換性があります。
Guará を使用する利点
- コードの再利用性の向上: 各クラスは完全なユーザー トランザクションを表します。
- 可読性の向上: コードは平易な英語に似ており、コラボレーションが容易になります。
- カスタマイズ可能なアサーション: カスタム アサーションを作成して共有します。
- ドライバーに依存しない: Selenium を超えたさまざまな自動化ツールで動作します。
- 多用途アプリケーション: REST API、単体テスト、デスクトップ、モバイル テストを自動化します。
Guará を始めましょう
- インストール:
pip install guara
-
AbstractTransaction
を使用してトランザクションを作成します。 - トランザクションを呼び出すには、
Application
、at
、およびasserts
を使用します。 - Pytest を使用して詳細なログを記録してテストを実行します:
python -m pytest -o log_cli=1 --log-cli-level=INFO
結論
Guará は、読みやすさ、保守性、ドライバーの独立性を優先して、テスト コードを編成するための新しいアプローチを提供します。これによりコラボレーションが促進され、カスタム アサーションの作成と共有が可能になります。 グアラをぜひ試してみてください!
以上がテスト自動化を整理する新しい方法としてのページ トランザクションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

API認証を扱うための鍵は、認証方法を正しく理解して使用することです。 1。Apikeyは、通常、リクエストヘッダーまたはURLパラメーターに配置されている最も単純な認証方法です。 2。BasicAuthは、内部システムに適したBase64エンコード送信にユーザー名とパスワードを使用します。 3。OAUTH2は、最初にclient_idとclient_secretを介してトークンを取得し、次にリクエストヘッダーにbearertokenを持ち込む必要があります。 4。トークンの有効期限に対処するために、トークン管理クラスをカプセル化し、トークンを自動的に更新できます。要するに、文書に従って適切な方法を選択し、重要な情報を安全に保存することが重要です。

Pythonを使用して最新の効率的なAPIを作成するには、Fastapiをお勧めします。標準のPythonタイプのプロンプトに基づいており、優れたパフォーマンスでドキュメントを自動的に生成できます。 FastAPIおよびASGIサーバーUVICORNをインストールした後、インターフェイスコードを記述できます。ルートを定義し、処理機能を作成し、データを返すことにより、APIをすばやく構築できます。 Fastapiは、さまざまなHTTPメソッドをサポートし、自動的に生成されたSwaggeruiおよびRedocドキュメントシステムを提供します。 URLパラメーターはパス定義を介してキャプチャできますが、クエリパラメーターは、関数パラメーターのデフォルト値を設定することで実装できます。 Pydanticモデルの合理的な使用は、開発の効率と精度を改善するのに役立ちます。

APIをテストするには、Pythonのリクエストライブラリを使用する必要があります。手順は、ライブラリのインストール、リクエストの送信、応答の確認、タイムアウトの設定、再試行です。まず、pipinstallRequestsを介してライブラリをインストールします。次に、requests.get()またはrequests.post()およびその他のメソッドを使用して、get requestsを送信または投稿します。次に、respons.status_codeとresponse.json()を確認して、返品結果が期待に準拠していることを確認します。最後に、タイムアウトパラメーターを追加してタイムアウト時間を設定し、再試行ライブラリを組み合わせて自動再生を実現して安定性を高めます。

Pythonでは、関数内で定義されている変数はローカル変数であり、関数内でのみ有効です。外部から定義されているのは、どこでも読むことができるグローバル変数です。 1。関数が実行されると、ローカル変数が破壊されます。 2。関数はグローバル変数にアクセスできますが、直接変更できないため、グローバルキーワードが必要です。 3.ネストされた関数で外部関数変数を変更する場合は、非ローカルキーワードを使用する必要があります。 4。同じ名前の変数は、異なるスコープで互いに影響を与えません。 5。グローバル変数を変更するときにグローバルを宣言する必要があります。それ以外の場合は、バウンドロカレラーロールエラーが発生します。これらのルールを理解することで、バグを回避し、より信頼性の高い機能を書くことができます。

PythonでネストされたJSONオブジェクトにアクセスする方法は、最初に構造を明確にし、次にレイヤーごとにインデックスを作成することです。まず、辞書ネストされた辞書やリストなど、JSONの階層関係を確認します。次に、辞書キーとリストインデックスを使用してレイヤーごとにアクセスし、データ「詳細」["zip"]などのレイヤーごとにアクセスして、zipエンコードを取得し、データの詳細[0]を取得して最初の趣味を取得します。 keyerrorとindexerrorを回避するために、デフォルト値は.get()メソッドで設定できます。または、capsulation function safe_getを使用して安全なアクセスを実現できます。複雑な構造の場合、jmespathなどのサードパーティライブラリを再帰的に検索または使用して処理します。

Pythonでは、ループを使用してタプルを通過する方法には、要素を直接繰り返し、インデックスと要素を同時に取得し、ネストされたタプルを処理する方法が含まれます。 1。インデックスを管理せずに、for loopを直接使用して、各要素に順番に各要素にアクセスします。 2。enumerate()を使用して、同時にインデックスと値を取得します。デフォルトのインデックスは0で、開始パラメーターも指定できます。 3.ネストされたタプルはループで開梱できますが、サブタプル構造が一貫していることを確認する必要があります。さらに、タプルは不変であり、ループでコンテンツを変更することはできません。不要な値は\ _によって無視できます。エラーを避けるために、トラバースする前にタプルが空であるかどうかを確認することをお勧めします。

Pythonで大きなJSONファイルを効率的に処理する方法は? 1. IJSONライブラリを使用して、アイテムごとの解析を介してメモリオーバーフローをストリーミングして回避します。 2. JSonlines形式の場合は、行ごとに読み取り、json.loads()で処理できます。 3.または、大きなファイルを小さな部分に分割してから、個別に処理します。これらの方法は、メモリ制限の問題を効果的に解決し、さまざまなシナリオに適しています。

はい、apythonclasscanhavemultipleconstructorsthroughtertechniques.1.Defaultargumentsionthodto __tododtoallowdodtoibleInitialization with varyingnumbersofparameters.2.declassmethodsasasaLternativeconstructorsoriable rerableible bulible clurecreatureati
