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