由于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