soapUI有高度的定制可能性; soapUI Pro中可打印的報告基於非常靈活的JasperReports報告引擎。 這些報告是從JasperReports生成的特定的基於XML的模板,可以在項目和全局層面進行定制,從而使您在創建的所有報告中都能輕松獲得通用的外觀和感覺。
在soapUI中創建可打印報告很容易; 只需從Report對話框中的 Report Type 下拉列表中選擇相應的報告,則所選報告將自動編譯並按配置生成。
Quick tip: 要充分了解soapUI Pro中的報告基礎架構,您應該很好地掌握JasperReports及其模板語言的工作原理,否則下面的一些解釋可能很難放在內容中
1. 報告管理
soapUI項目窗口包含一個報告選項卡,其中所有全局和項目級報告都可用:
不同的子選項卡可讓您訪問主報表,子報表和模板以及項目級報表參數的底層XML。 可以根據需要創建,刪除和編輯項目級別項目,但不能在soapUI中修改全局項目。 它們必須在文件系統中進行修改,並重新加載頂部工具欄中的“重新加載”按鈕以進行更新(稍后再進行更改)。
2. 報告結構
soapUI結構報告如下:
- Main Reports是reporting對話框中顯示的頂層模板,可在上面的 Available Reports選項卡中顯示。 主報表模板是一個標准的jasperReport模板,它接收報表范圍特定的模型項作為其DataSource,例如生成LoadTest報表時,傳遞給報表的數據對象是WsdlLoadTest,其屬性可以定義為 報告和已使用。
-
主報表可以通過標准的JasperReports子報表機制結合soapUI特定的URL前綴(“subreport:”),包括任何數量的子報表(在“子報表”選項卡中顯示)。 子報表從生成報表時可用的指定DataSource獲取其數據。 看看Subreports選項卡,我們可以看到所有可用的子報表及其相應的DataSource:
例如,MetricsReport子報表從ReportMetrics獲取其數據,並包含在所有主要報告中,並具有以下語法:y="98" width="535" height="30" isRemoveLineWhenBlank="true"> $P{IncludeResults} ... $P{TestSuiteMetrics} "subreport:MetricsReport"
您可以看到subreportExpression使用soapUI特定的“subreport:”URL語法,soapUI用於查找指定的SubReport模板。 TestSuiteMetrics暴露的字段在MetricsReport模板中相對定義:... ...
- Templates 允許管理模板XML的公共塊。 選項卡如下所示:
然后可以使用熟悉的屬性擴展語法將上述示例模板插入到任何報表中: -
最后,參數允許對報告內容進行參數化,而無需重新編譯底層模板。 參數選項卡允許您根據需要添加參數值:
Quick tip: 標准soapUI屬性擴展可用於上述任何模板或參數值。 例如,如果要在報表中顯示當前用戶名,您可以在模板中的相應位置添加$ {#System#user.name}。 這提供了非常靈活的報告,但可能降低報告性能,因為soapUI緩存編譯報告模板以供重用。 每當報表模板中的屬性擴展中的值更改時,soapUI將需要重新編譯包含的模板。
3. 報告存儲
所有全局報告模板都存儲在soapUI-Pro \ bin \ reports文件夾下的文件系統中:
The base folders are:
- logos : 包含使用 logo: protocol圖像標識引用的任何圖像
- reports : 包含所有全局主要報告模板,每個子文件夾對應於“ Available Reports”選項卡中的“Report Type”列
- subreports : 包含所有全局子報表模板,每個子文件夾對應於“子報表”選項卡中的報表類型列
- templates :
Opening one of these folders reveals the following:
在這里可以看到,每個模板都保存為兩個文件:
-
一個* .jrxml文件,它是一個jasper模板,可以在任何JasperReports編輯器或任何文本編輯器中進行編輯
-
一個* -config.xml文件(以jrxml命名),其中包含soapUI使用的模板的元數據。
如果要更改任何全局項目的模板內容,請直接在文件系統(通過修改jrxml文件)中執行此操作,然后在保存更改后按“報告”選項卡工具欄中的“
Reload”按鈕:
樣式和圖像
默認報告使用名為styles.jrtx的通用樣式模板(見上面的截圖)。 報告中包含以下內容:
該文件包含許多標題的樣式定義等:
修改此文件將更改所有報告的一般外觀。
相應地,圖標和圖像可以在存儲圖標文件夾中替換:

自定義全局報告
如果要自定義全局報告的外觀而不修改默認的報表,則可以使用“自定義全局報告”功能;
- 在本地創建一個全局報告文件夾的副本
- 在這個文件夾中的模板允許根據需要進行自定義
- 在全局設置中中數據副本路徑:
- 此處創建的報表和模板將顯示在不同報告選項卡中作為全局報告被使用。
項目級別報告存儲
當您在項目級別創建自定義報告時,這些報告將與項目數據的其余部分一起存儲在項目文件中,以便輕松重新分配。 如果將項目保存為soapUI Pro中的復合項目,則報告將保存在類似於Composite Project文件夾中的全局文件結構的文件結構中,從而允許您使用外部工具編輯這些報告,就像全局報告一樣。
定制模板
soapUI Pro允許高度的報告定制。 您可以根據需要創建任意數量的報表和子報表模板。 這些可以包含內部DataSet和任何外部源(數據庫等)公開的數據 - 就像任何JasperReport一樣。 我們來看看如何在項目級別創建一個簡單的自定義報告,以及如何使用不同的自定義機制。
1. 創建自定義模板
-
我們首先在項目層面增加一個全新的報告; 按可用報告工具欄中的添加報告模板按鈕:
-
將名稱設置為“屬性”,將類型設置為COMMON(意味着它將在所有級別都可用)。 按OK可以給我們:
-
這里我們可以選擇我們想要自動包含在報表中的子報表。 選擇PropertiesReport子報表,然后按OK。 生成的模板可以在編輯器中看到:
- 如果我們現在轉到“項目概述”選項卡並添加一個屬性:
- 點擊工具欄的 Create Report 按鈕:

- 選擇新建的 Properties 點擊ok呈現以下報告:

- 字符串null不完全符合。 我們來看看屬性SubReport,在模板中我們可以看到以下內容:
- 看來,Type作為參數傳遞給報表。 我們為此添加一個硬編碼的值:

If we now recreate the report we get:

2. 添加參數
- 我們添加一個參數來設置報告標題(而不是Sample Project)。
- 現在使用默認值將參數添加到Parameters選項卡:
- 這個參數可以在soapUI Pro中的任何級別覆蓋,因為這是一個Common報告,我們可以生成它,無論我們想要什么,例如; 對於TestCase,我們可以設置ReportTitle:


1. 報表定制對象
參數對象
params對象是一個標准的StringToObjectMap,用於保存所有定義的報告參數的值,包括要填充在報告模板中定義的和“
Report
Parameters”選項卡中定義的那些參數。 設置參數值為:
params.<parametername> = <value>
例如在我們的定制文檔中,我們定義了一個“ReportTitle”參數,在我們的腳本中,我們可以通過編程方式將當前日期添加到標題中:
報告對象
報告對象有兩個主要用途:
- 添加要顯示在報表的指標部分的指標
-
添加/修改子報表數據
2. 向report添加指標
soapUI附帶的每個默認報告都包含一個指標部分,顯示MetricsReport模板呈現的相關執行指標:
指標被分組並可以在左邊可選的顯示。 添加指標非常簡單:
report.addMetric( "user.name", System.getProperty( "user.name" ))
將“用戶名”指標添加到
Base
Metrics
category類別,然后在主報表中顯示為:
如果我們想把它們放在我們自己的類別之下; 讓我們做:
report.addMetric( "System Properties", "user.name", System.getProperty( "user.name" ), null )
顯示一下效果:
嗯...為什么不添加所有的? 腳本是:
for( name in System.properties.propertyNames() ) { report.addMetric( "System Properties", name, System.getProperty( name ), null ) }
and the result: