studio
2023.10
false
- リリース ノート
- 基本情報
- セットアップと構成
- オートメーション プロジェクト
- 依存関係
- ワークフローの種類
- ファイルの比較
- オートメーションのベスト プラクティス
- ソース管理との連携
- デバッグ
- 診断ツール
- ワークフロー アナライザー
- 変数
- 引数
- インポートされた名前空間
- コード化されたオートメーション
- はじめに
- カスタム サービスを登録する
- Before および After コンテキスト
- トリガーベースの有人オートメーション
- レコーディング
- UI 要素
- 制御フロー
- セレクター
- オブジェクト リポジトリ
- データ スクレイピング
- 画像とテキストの自動化
- Citrix テクノロジの自動化
- RDP の自動化
- Salesforce の操作の自動化
- SAP のオートメーション
- VMware Horizon の自動化
- ログ
- ScreenScrapeJavaSupport ツール
- Webdriver プロトコル
- Test Suite - Studio
- 拡張機能
- トラブルシューティング
重要 :
このコンテンツの一部は機械翻訳によって処理されており、完全な翻訳を保証するものではありません。
Studio ガイド
Last updated 2024年11月4日
Before および After コンテキスト
テスト ケース内では、テスト ケースの実行前 (Before) と実行後 (After) に特定のアクションを実行できます。これらのコンテキストは、通常、リソースの設定と破棄、ログ記録の実行、およびテスト環境の管理に使用されます。
BeforeRunContext
(設定): Before の実行は、テスト ケースのメインの実行前にアクションを実行するために使用されます。多くの場合、テスト環境の初期状態の設定やリソースの準備に使用されます。Before コンテキストの一般的なユース ケースには、以下のようなものがあります。- テストに必要な変数またはデータを初期化する。
- 外部システムまたはデータベースへの接続を設定する。
- テスト実行の開始をログに記録する。
- テストで使用するアプリケーションまたは Web ページを開く。
- テスト ケースの実行前に固有の例外を設定する。
AfterRunContext
(ティアダウン): After (実行後) は、テスト ケースのメイン実行の完了後にアクションを実行するために使用されます。通常、リソースのクリーンアップ、操作の完了、およびテスト結果の記録に使用されます。After コンテキストの一般的なユース ケースは以下のとおりです。- テスト中に使用されたアプリケーションまたは Web ページを閉じる。
- データベース接続やネットワーク リソースなどのリソースを解放する。
- Before コンテキストとメイン実行で記録された例外をキャッチして出力する。
コード化されたオートメーションでは、実行の前後に実行されるアクションのカスタム インターフェイスを作成することができます。そのためには、メイン クラスに隣接する
IBeforeAfterRun
インターフェイスを宣言し、これらのアクションに独自のカスタム ロジックを実装します。
BeforeRunContext
の定義を調べると、
以下のコード スニペットが
見つかります。// Context of the run before the execution.
public class BeforeRunContext
{
// The relative path of the workflow.
public string RelativeFilePath { get; set; }
}
// Context of the run before the execution.
public class BeforeRunContext
{
// The relative path of the workflow.
public string RelativeFilePath { get; set; }
}
このコンテキストは、オートメーションの実行前のステートを表します。実行されるワークフローの相対パスに関する情報が含まれます。ユース ケースに応じて、ここで例外を設定できます。
AfterRunContext
の定義を調べると、
以下のコード スニペットが
見つかります。// Context of the run after the execution.
public class AfterRunContext
{
// The relative path of the workflow.
public string RelativeFilePath { get; set; }
// The exception caught in execution if any.
public Exception Exception { get; set; }
}
// Context of the run after the execution.
public class AfterRunContext
{
// The relative path of the workflow.
public string RelativeFilePath { get; set; }
// The exception caught in execution if any.
public Exception Exception { get; set; }
}
このコンテキストは、オートメーションの実行後のステートを表します。実行されたワークフローの相対パスと、実行前および実行中にキャッチされた例外に関する詳細が含まれます。
Before と After を使用すると、コード化されたテスト ケースの前後にアクションを定義して、オートメーションを強化できます。このカスタム実装は、コード化されたテスト ケース内で作成することも、別の部分クラスとして作成することもできます。このチュートリアルでは、設定、破棄、およびログをコード化されたテスト ケースに統合する方法について説明します。
Before (実行前) および After (実行後) インターフェイスは、コード化されたテスト ケース内に直接実装できます。
- コード化されたテスト ケースが存在する
パブリック クラス内の場合は、
IBeforeAfterRun
インターフェイスを 追加します。このクラスは赤で強調表示され、考えられる修正内容 が示されます。public class MyTest : CodedWorkflow, IBeforeAfterRun
public class MyTest : CodedWorkflow, IBeforeAfterRun - [考えられる修正内容を表示] を選択するか、
Ctrl + .
キーを押して [インターフェイスを実装] を選択します。これにより、以下のような既定のインターフェイスが生成 されます。public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); }
public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); } - 必要に応じて実装を変更します。
示されているコード例では、コンテキストは 実行前にメッセージをログに記録し、 実行後に例外を確認します。
public void After(AfterRunContext context) { if (context.Exception != null) { Log(context.Exception.Message); } } public void Before(BeforeRunContext context) { Log("this is before"); }
public void After(AfterRunContext context) { if (context.Exception != null) { Log(context.Exception.Message); } } public void Before(BeforeRunContext context) { Log("this is before"); }
Before および After 実行のインターフェイスは、カスタム部分クラスを使用してプロジェクト内の特定の
.cs
ファイルにのみ実装できます。
- コード ソース ファイルを作成します。ここに Before および After 実行のインターフェイスを実装します。この例では、ファイルに
TestCaseBase
という名前を付けます。- public class の横に
IBeforeAfterRun
インターフェイスを追加します。このクラスは赤で強調表示され、考えられる修正内容が示されます。注: カスタム部分クラス (この例ではTestCaseBase
) は、CodedWorkflow
クラスを継承する必要があります。これにより、このカスタム部分クラスを継承する他のcs
ファイルを期待どおり実行できます。public class TestCaseBase : CodedWorkflow, IBeforeAfterRun
public class TestCaseBase : CodedWorkflow, IBeforeAfterRun - [考えられる修正内容を表示] を選択するか、
Ctrl + .
キーを押して [インターフェイスを実装] を選択します。これにより、以下のような既定のインターフェイスが生成されます。public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); }
public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); } - 必要に応じて実装を変更します。
示されている例では、コンテキストは実行前にメッセージをログに記録し、実行後に例外を確認します。
public void After(AfterRunContext context) { if (context.Exception != null) { throw context.Exception; } else { Log("Test " + context.RelativeFilePath + " finished with no exception."); } } public void Before(BeforeRunContext context) { Log("Execution started for " + context.RelativeFilePath); }
public void After(AfterRunContext context) { if (context.Exception != null) { throw context.Exception; } else { Log("Test " + context.RelativeFilePath + " finished with no exception."); } } public void Before(BeforeRunContext context) { Log("Execution started for " + context.RelativeFilePath); }
これで、このカスタム部分クラスを使って、同じクラスを継承する.cs
ファイルでのみ、同じ Before および After 実行のインターフェイスを使用できるようになります。 - public class の横に
- コード化されたオートメーションを作成します。この例では、
TestCase
という名前のコード化されたテスト ケースを作成します。カスタム部分クラスの Before と After 実行のインターフェイスを使用するには、コード化されたテスト ケースがこの部分クラスから継承することを確認します。public class TestCase : TestCaseBase { [TestCase] public void Execute() { Log("Executing the test..."); }
public class TestCase : TestCaseBase { [TestCase] public void Execute() { Log("Executing the test..."); }
この実装がどのように機能するかを確認するには、以下の出力ログをご覧ください。
Execution started for file: TestCase.cs
[Info] IBeforeAfterRunExamples execution started
[Info] Execution started for TestCase.cs
[Info] Executing the test...
[Info] Test TestCase.cs finished with no exception.
[Info] IBeforeAfterRunExamples execution ended in: 00:00:00
Execution started for file: TestCase.cs
[Info] IBeforeAfterRunExamples execution started
[Info] Execution started for TestCase.cs
[Info] Executing the test...
[Info] Test TestCase.cs finished with no exception.
[Info] IBeforeAfterRunExamples execution ended in: 00:00:00
Before および After コンテキスト インターフェイスは、プロジェクト内の他のコード化されたテスト ケースまたはコード化されたワークフローが継承できる
CodedWorkflow
部分クラスを使用して実装できます。この実装は、プロジェクト内のすべてのコード化されたテスト ケースとコード化されたワークフローに適用されます。
- コード ソース ファイルを作成し、
CodedWorkflow.cs
とは異なる名前を付けます。そうしないと、部分クラスが既存の読み取り専用クラスCodedWorkflow
と競合します。 - Before および After コンテキストのカスタム インターフェイスを実装する部分クラスを構築します。
- クラスの名前を
CodedWorkflow
に変更します。そうしないと、利用可能なサービスを利用できなくなります。 - コード化されたソース ファイル内のクラスが
CodedWorkflowBase
クラスを継承していることを確認します。 - コード ソース ファイルの先頭に名前空間
UiPath.CodedWorkflows
を追加します。using System; using System.Collections.Generic; using UiPath.CodedWorkflows;
using System; using System.Collections.Generic; using UiPath.CodedWorkflows; - コード ソース ファイルのクラス内に、
IBeforeAfterRun
をインクルードします。namespace TestAutomationProject1 { public partial class CodedWorkflow : CodedWorkflowBase, IBeforeAfterRun
namespace TestAutomationProject1 { public partial class CodedWorkflow : CodedWorkflowBase, IBeforeAfterRun IBeforeAfterRun
上でホバーして [考えられる修正内容を表示] を選択するか、IBeforeAfterRun
を選択してからCtrl + .
キーを押します。- [Implement interface] を選択します。
これにより、以下のような既定の実装が作成 されます。
public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); }
public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); } - 任意で、ユース ケースに応じてインターフェイスをさらにカスタマイズすることもできます。以下のコード サンプルでは、コンテキストは実行前にメッセージを出力します。実行後に例外がスローされていたかどうかを確認し、スローされていた場合は再びメッセージを出力します。
public void After(AfterRunContext context) { if (context.Exception != null) { Log(context.Exception.Message); } } public void Before(BeforeRunContext context) { Log("this is before"); }
public void After(AfterRunContext context) { if (context.Exception != null) { Log(context.Exception.Message); } } public void Before(BeforeRunContext context) { Log("this is before"); }