Selenium測試結果可視化工具--Sahagin測試框架使用入門(一)

由於Sahagin(サハギン)是日本人開源出的測試框架,所以國內網絡上關於Sahagin的介紹很少,基於git的wiki翻譯出如下的內容。如有不正確之處,歡迎指出錯誤之處。

原文見:https://github.com/SahaginOrg/sahagin-java/wiki

Sahagin

使你的Selenium腳本更具可讀性和維護性!Sahagin提供高可讀的HTML測試腳本視圖和測試結果報告。

Sahagin概要

什麼是Sahagin?簡短的答案是“可以通過Selenium WebDriver 測試程序生成可讀的表格測試結果的工具,這些測試程序的方法定義擁有描述性的註解”。儘管有許多表格性的測試腳本維護工具,比如Selenium IDE,Sahagin的特點是,它使測試腳本的可讀性的同時,又不失“靈活的描述能力”和儘可能不失由編程語言提供的“可維護性”。我們可以從一些例子來理解。

如果你採用page object模式

如果你使用WebDriver,它建議爲每一個web頁面創建一個類並且在類上定義所有頁面的行爲來減少維護測試腳本的成本。這個設計模式被稱之爲page object模式,這個模式在自動化測試中十分流行。

如果你使用這個模式,需要在每一個頁面類定義的方法上添加@TestDoc註解和註釋。(Page Object類必須放在testDir目錄下,一般設置爲src/test/java 下,在下一篇文章中會講testDir的配置)

@PageDoc("Contact page")
public class ContactPage {
    private WebDriver wd;

    public ContactPage(WebDriver wd) {
        this.wd = wd;
    }

    @TestDoc("set name '{name}'")
    public void setName(String name) {
        wd.findElement(By.name("your-name")).clear();
        wd.findElement(By.name("your-name")).sendKeys(name);
    }

    ...

    @TestDoc("send inquiry")
    public void send() {
        wd.findElement(By.cssSelector(
                "input.wpcf7-submit")).click();
    }
}

使用測試腳本中的頁面類與web頁面進行交互。

@Test
public void inquiryTest_1() {
    wd.get("http://www-demo.trident-qa.com/en/contact/");
    ContactPage contact = new ContactPage(wd);
    contact.setName("test user");
    contact.setMail("***@***.com");
    contact.setOrganization("TRIDENT Inc.");
    contact.setSubject("test");
    contact.setMessage("this is test inquiry");
    contact.send();
}
在執行測試用例後,HTML報告就會被生成。


如果你直接適用WebDriver命令

Sahagin會爲列如click或sendKeys等基礎操作自動添加描述。你不需要爲這些操作添加@TestDoc註釋。
@Test
public void inquiryTest_2() {
    wd.get("http://www-demo.trident-qa.com/en/contact/");
    wd.findElement(By.name("your-name")).clear();
    wd.findElement(By.name("your-name")).sendKeys("test user");
    wd.findElement(By.name("your-email")).clear();
    wd.findElement(By.name("your-email")).sendKeys("***@***.com");
    wd.findElement(By.name("your-organization")).clear();
    wd.findElement(By.name("your-organization")).sendKeys("TRIDENT Inc.");
    wd.findElement(By.name("your-subject")).clear();
    wd.findElement(By.name("your-subject")).sendKeys("test");
    wd.findElement(By.name("your-message")).clear();
    wd.findElement(By.name("your-message")).sendKeys("this is test inquiry");
    wd.findElement(By.cssSelector("input.wpcf7-submit")).click();
}


如果你使用你自己的測試框架或者封裝

你已經創建了你自己的測試框架愛或者封裝,怎麼使用它呢?沒問題。只需要簡單的在你的測試框架愛方法上添加@TestDoc註解就可以了。
@TestDoc("click element 'css = {cssSelector}'")
public void clickByCss(String cssSelector) {
    wd.findElement(By.cssSelector(cssSelector)).click();
}

@TestDoc("set text '{text}' to element 'name = {name}'")
public void setTextByName(String name, String text) {
    wd.findElement(By.name(name)).clear();
    wd.findElement(By.name(name)).sendKeys(text);
}

@Test
public void inquiryTest_3() {
    wd.get("http://www-demo.trident-qa.com/en/contact/");
    setTextByName("your-name", "test user");
    setTextByName("your-email", "***@***.com");
    setTextByName("your-organization", "TRIDENT Inc.");
    setTextByName("your-subject", "test");
    setTextByName("your-message", "this is test inquiry");
    clickByCss("input.wpcf7-submit");
}


你不需要停止使用你自己的方法或者父類。Sahagin可以很容的集成其他已經存在的測試框架。

分層顯示方法調用

Sahagin HTML報告可以分層展示測試方法調用

你可以很容檢查你的普通方法的細節,這能夠讓你很容易理解測試腳本的細節。


屏幕捕獲(截圖)

Sahagin可以自動爲每一個加了@TestDoc註解的步驟和失敗的測試截圖。你可以通過上下移動鼠標,在HTML報告上很容易地檢查每一個測試步驟。


錯誤行高亮

錯誤行會在HTML報告中紅色高亮顯示。



在Jenkins中查看測試結果


你可以通過Sahagin Jenkins plugin 將每一步的Sahagin報告關聯到Jenkins Junit測試報告頁。


Jenkins測試報告和Sahagin測試報告的組合會很容易調查出失敗的測試,並且和你的顧客和其他開發者分析自動的場景細節。

支持的環境

最新的Sahagin-java支持:
  • Java 1.7或者之後的版本
  • JUnit4,JUnit3,TestNG
  • Selenium WebDriver,FluentLenium,Appium,Selendroid,ios-driver
Sahagin被設計能夠很容易兼容其他Java測試框架或者其他編程語言列如Ruby,Python
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章