由於Sahagin(サハギン)是日本人開源出的測試框架,所以國內網絡上關於Sahagin的介紹很少,基於git的wiki翻譯出如下的內容。如有不正確之處,歡迎指出錯誤之處。
原文見:https://github.com/SahaginOrg/sahagin-java/wiki
Sahagin
使你的Selenium腳本更具可讀性和維護性!Sahagin提供高可讀的HTML測試腳本視圖和測試結果報告。
Sahagin概要
如果你採用page object模式
@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命令
@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");
}
分層顯示方法調用
屏幕捕獲(截圖)
錯誤行高亮
在Jenkins中查看測試結果
支持的環境
- Java 1.7或者之後的版本
- JUnit4,JUnit3,TestNG
- Selenium WebDriver,FluentLenium,Appium,Selendroid,ios-driver