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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值