【UFT】ユーティリティまとめ　～環境編～

テスト自動化ツールである、UFT(Unified Functional Testing)
環境メソッド(Environment Method)について、
公式リファレンスを参考にしながら使い方などをまとめたいと思います。

※公式リファレンスは英語のみです。日本語記事がないので、作成をしてみました。


# Environment Method
UFTでは、独自の環境変数を21個組み込まれています。
独自の環境変数以外にも、ユーザが定義することが可能な環境変数もあります。
こちらは外部ファイルなども用いることができ、アレンジして使います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288745/96c59443-d1df-6356-1363-59317c9aa6a4.png)

## Environmentを操作するオブジェクト

Environment Methodでは、次の3つを使い操作をします

|オブジェクト名|概要|
|---|---|
|Value|環境変数の取得、設定|
|LoadFromFile|環境変数ファイルのロード|
|ExternalFileName|ロードした環境変数ファイルの名前を返す。<br>ロードされていない場合は空の文字列を返す|

# Value Object

環境変数の値を設定・取得することができます。

```vb:Valueの例
'環境変数_値の取得_構文
env = Environment.Value(Environment)
'環境変数_値の設定_構文
Environment.Value(Environment) = NewValue
```

## 取得可能な環境変数一覧

|#|環境変数名|説明|
|---|---|---|
|01|ActionIteration		|現在実行中のアクション反復を示します			|
|02|ActionName			|現在実行中のアクションを示します				|
|03|ControllerHostName		|実行指示を別端末からした場合、実行指示を出した端末名を取得	|
|04|GroupName			|シナリオ識別番号（QCからの実行時などで取得できます）	|
|05|LocalHostName		|ローカルホスト名					|
|06|OS				|OS名（Windwos10とか）					|
|07|OSVersion			|OSのバージョン						|
|08|ProductDir			|UFTがインストールされているフォルダパス			|
|09|ProductName			|このシステムを実行しているプログラムの名前（UFTのこと）	|
|10|ProductVer			|UFTのバージョン						|
|11|ResultDir			|実行結果が格納されるフォルダパス				|
|12|ScenarioId			|シナリオ識別番号					|
|13|SystemTempDir		|システム一時ディレクトリ					|
|14|TestDir			|テストが格納されている場所。フォルダパス			|
|15|TestIteration		|現在実行中のテスト反復を示します				|
|16|TestName			| テストの名前						|
|17|UpdatingActiveScreen	|ActiveScreenの画像と値が更新中であるかを示します		|
|18|UpdatingCheckpoints		|チェックポイントのプロパティが更新中であるかを示します	|
|19|UpdatingTODescriptions	|オブジェクトリポジトリが編集中であるかを示します		|
|20|UserName			|Windwosのログインユーザー名				|
|21|VuserId			|仮想ユーザー識別番号					|

## Valueコマンド_サンプルコード

```VB:Environment.Value（取得）
ActionIteration			=	Environment.Value("ActionIteration")			' 現在実行中のアクション反復を示します
ActionName				=	Environment.Value("ActionName")					' 現在実行中のアクションを示します
ControllerHostName		=	Environment.Value("ControllerHostName")			' 実行指示を別端末からした場合、実行指示を出した端末名を取得
GroupName				=	Environment.Value("GroupName")					' シナリオ識別番号（QCからの実行時などで取得できます）
LocalHostName			=	Environment.Value("LocalHostName")				' ローカルホスト名
OS						=	Environment.Value("OS")							' OS名（Windwos10とか）
OSVersion				=	Environment.Value("OSVersion")					' OSのバージョン
ProductDir				=	Environment.Value("ProductDir")					' UFTがインストールされているフォルダパス
ProductName				=	Environment.Value("ProductName")				' このシステムを実行しているプログラムの名前（UFTのこと）
ProductVer				=	Environment.Value("ProductVer")					' UFTのバージョン
ResultDir				=	Environment.Value("ResultDir")					' 実行結果が格納されるフォルダパス
ScenarioId				=	Environment.Value("ScenarioId")					' シナリオ識別番号
SystemTempDir			=	Environment.Value("SystemTempDir")				' システム一時ディレクトリ
TestDir					=	Environment.Value("TestDir")					' テストが格納されている場所。フォルダパス
TestIteration			=	Environment.Value("TestIteration")				' 現在実行中のテスト反復を示します
TestName				=	Environment.Value("TestName")					' テストの名前
UpdatingActiveScreen	=	Environment.Value("UpdatingActiveScreen")		' ActiveScreenの画像と値が更新中であるかを示します
UpdatingCheckpoints		=	Environment.Value("UpdatingCheckpoints")		' チェックポイントのプロパティが更新中であるかを示します
UpdatingTODescriptions	=	Environment.Value("UpdatingTODescriptions")		' オブジェクトリポジトリが編集中であるかを示します
UserName				=	Environment.Value("UserName")					' Windwosのログインユーザー名
VuserId					=	Environment.Value("VuserId")					' 仮想ユーザー識別番号

```

# LoadFromFile

指定された環境変数ファイルをロードします。
環境変数ファイルは以下の構文を利用したXMLファイルである必要があります。

```XML:LoadFromFile
<Environment>
	<Variable>
 		<Name>　変数名　</Name>
		<Value>　値　</Value>
		<Name>　hoge　</Name>
		<Value>　hogehoge　</Value>
	</Variable>
</Environment>
```

```VB:Sample_Code
'ロードした環境変数から,Name:hogeを読み込んで、定義している"hogehoge"をstrParamに格納する

Environment.LoadFromFile("C:\Automation\sample.xml")
strParam = Environment.Value("hoge")

```

# ExternalFileName

[ファイル] > [設定] > [環境] > [変数のタイプ：ユーザー定義] で紐づけされている外部環境変数の名前を返します。
何も設定がされていない場合は、空の文字列を返します。

```vb:sample_Code
env = Environment.ExternalFileName

If env = "" Then
    print "外部環境ファイルはロードされていないか、空です"
End If

```

*********************** 
# 参考・参照
・UFT One Object Model Reference（公式ページ）
https://admhelp.microfocus.com/uft/en/15.0-15.0.1/UFT_Help/Subsystems/OMRHelp/Content/OV_Supp_Util/Utility_ReservedObj.htm?tocpath=Object%20Model%20Reference%20for%20GUI%20Testing%7CUtility%20Objects%7C_____0