(十一)TestNG學習之路—BeanShell高階用法
目錄
(一)TestNG學習之路—HelloWorld入門
(二)TestNG學習之路—註解及屬性概覽
(三)TestNG學習之路—TestNG.xml/YAML
(四)TestNG學習之路—註解詳述之@Test
(五)TestNG學習之路—註解詳述之引數化
(六)TestNG學習之路—註解詳述之@Factory
(七)TestNG學習之路—註解詳述之忽略測試
(八)TestNG學習之路—註解詳述之併發
(九)TestNG學習之路—失敗測試重跑
(十)TestNG學習之路—編碼執行TestNG
(十一)TestNG學習之路—BeanShell高階用法
(十二)TestNG學習之路—註解轉換器
(十三)TestNG學習之路—方法攔截器
(十四)TestNG學習之路—TestNG監聽器
(十五)TestNG學習之路—依賴注入
(十六)TestNG學習之路—測試報告
(十七)基於TestNG+Rest Assured+Allure的介面自動化測試框架
前言
用過Jmeter的童鞋肯定都聽說過Beanshell,BeanShell是一種鬆散型別的指令碼語言(和JS類似),一種完全符合java語法的java指令碼語言,但其也擁有自己的語法和方法,足以可見其功能的強大。更讓你吃驚的是,TestNG居然可以同Beanshell結合,構建強大的testng.xml配置。
環境配置
登入beanshell官網下載bsh-2.0b4.jar,放到$JAVA_HOME/jre/lib/ext目錄下。更詳細的說明可以參考beanshell手冊。
To install as an extension place the bsh.jar file in your
$JAVA_HOME/jre/lib/ext folder. (OSX users: place the bsh.jar in
/Library/Java/Extensions or ~/Library/Java/Extensions for individual users.)
Or add BeanShell to your classpath like this:
windows: set classpath %classpath%;bsh-xx.jar
示例
當在<script>標籤出現在testng.xml時,TestNG將忽略當前test標籤下的組和方法的<include>,<exclude>標籤,您的BeanShell表示式將是決定是否執行測試方法的唯一因素。
編寫測試類如下:
import org.testng.Assert;
import org.testng.annotations.*;
@Test(groups = "test1")
public class TestNGHelloWorld1 {
@BeforeTest
public void bfTest() {
System.out.println("TestNGHelloWorld1 beforTest!");
}
@Test(expectedExceptions = ArithmeticException.class, expectedExceptionsMessageRegExp = ".*zero")
public void helloWorldTest1() {
System.out.println("TestNGHelloWorld1 Test1!");
int c = 1 / 0;
Assert.assertEquals("1", "1");
}
@Test()
@Parameters(value = "para")
public void helloWorldTest2(@Optional("Tom")String str) {
Assert.assertEquals("1", "1");
System.out.println("TestNGHelloWorld1 Test2! "+ str);
}
@AfterTest
public void AfTest() {
System.out.println("TestNGHelloWorld1 AfterTest!");
}
}
testng.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite" group-by-instances="true">
<test verbose="2" preserve-order="true" name="Test">
<method-selectors>
<method-selector>
<script language="beanshell">
<![CDATA[
groups.containsKey("test1")
]]>
</script>
</method-selector>
</method-selectors>
<classes>
<class name="TestNGHelloWorld1"/>
</classes>
</test>
</suite>
執行結果如下:
TestNGHelloWorld1 beforTest!
TestNGHelloWorld1 Test1!
TestNGHelloWorld1 Test2! Tom
TestNGHelloWorld1 AfterTest!
===============================================
All Test Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================
由此可見,beanshell可讓測試/開發人員更靈活地對testng.xml進行配置。但需要關注以下幾點:
- 它必須返回一個布林值。除了這個約束之外,還允許任何有效的BeanShell程式碼(例如,您可能想在工作日期間返回true,在週末返回false,這將允許您根據日期以不同的方式執行測試)。
- 為了方便起見,TestNG定義了以下變數:
java.lang.reflect.Method method: 當前的測試方法
org.testng.ITestNGMethod testngMethod: 當前測試方法的描述
java.util.Map<String, String> groups: 當前測試方法所屬組的對映
上述testng.xml的groups.containsKey返回的正是布林值。
擴充套件學習資料
關於beanshell的學習,可參考beanshell手冊。
相關文章
- MySql 學習之路-高階2MySql
- oracle學習筆記(十一) 高階查詢Oracle筆記
- 第十一章、高階語法與用法
- testng學習
- 【Python學習教程】Python的5種高階用法!Python
- 【Pandas學習筆記02】-資料處理高階用法筆記
- Nginx 高階用法Nginx
- play高階用法
- vue3 學習筆記 (四)——vue3 setup() 高階用法Vue筆記
- JS高階程式設計第十一章.個人學習筆記JS程式設計筆記
- redis學習——高階功能Redis
- jmeter學習指南之Beanshell Sampler 常用方法JMeterBean
- curl與wget高階用法wget
- Python字典的高階用法Python
- gojs 實用高階用法GoJS
- Newtonsoft.Json高階用法JSON
- Haskell學習-高階函式Haskell函式
- 《前端之路》之 JavaScript 高階技巧、高階函式(一)前端JavaScript函式
- 高階 Android 工程師的進階之路Android工程師
- 理解JSON.stringify()高階用法JSON
- Python裝飾器高階用法Python
- python str.format高階用法PythonORM
- PHP yield 高階用法——網路PHP
- Linux下more命令高階用法Linux
- Shell-變數高階用法變數
- 02 . SaltStack高階用法(Python API)PythonAPI
- Python——迭代器的高階用法Python
- 7章 RxJava高階用法(一)RxJava
- 8章 RxJava高階用法(二)RxJava
- Linux下mv命令高階用法Linux
- Pandas高階教程之:GroupBy用法
- MySQL高階學習筆記(二)MySql筆記
- git高階命令學習記錄Git
- 高手系列!資料科學傢俬藏pandas高階用法大全 ⛵資料科學
- Python 爬蟲從入門到進階之路(十一)Python爬蟲
- Java初級~中級~高階進階之路Java
- vue父子元件通訊高階用法Vue元件
- Flutter 中漸變的高階用法Flutter