本片文章主要解释如何使用Sahagin。
1、sahagin.jar依赖和JVM参数设置
(1)Maven
在pom.xml文件中添加依赖和测试执行JVM参数
<properties> <sahagin.version>0.9.1</sahagin.version> </properties> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.53.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-exec --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-exec</artifactId> <version>1.3</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>com.opera</groupId> <artifactId>operadriver</artifactId> </dependency> <dependency> <groupId>org.sahagin</groupId> <artifactId>sahagin</artifactId> <version>${sahagin.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>com.opera</groupId> <artifactId>operadriver</artifactId> <version>0.16</version> <exclusions> <exclusion> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-remote-driver</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.4</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.18 </version> <configuration> <forkCount>3</forkCount> <reuseForks>true</reuseForks> <argLine> -javaagent:${settings.localRepository}/org/sahagin/sahagin/${sahagin.version}/sahagin-${sahagin.version}.jar </argLine> <useSystemClassLoader>true</useSystemClassLoader> </configuration> </plugin> </plugins> </build>
(3)直接使用jar包
从https://github.com/SahaginOrg/sahagin-java/releases 下载 sahagin-0.9.2.zip,将所有的jar文件添加到java class path中。当你运行测试用例的适用,必须添加参数-javaagent:<path to sahagin.jar>。
import org.sahagin.runlib.external.PageDoc; import org.sahagin.runlib.external.TestDoc; @PageDoc("Contact page") public class ContactPage { @TestDoc("set name '{name}'") public void setName(String name) { .... } @TestDoc("name") public String getName() { .... } @TestDoc("set mail address '{0}'") public void setMail(String email) { .... } .... }
2.添加注解
添加@PageDoc注解在你声明的page object 类上,在你的page object方法上或者其他方法上添加@TestDoc注解
没有添加注解的方法或者类也可以呈现在Sahagin报告中,因此你不需要再你所有的类和方法上添加注解
使用{parameter name} 或者{parameter index start from 0}来在@TestDoc中包含方法参数信息
getter方法的@TestDoc 描述 ,列如“getName”方法应该是名词列如“name”,而不是列如“get name”的动词;因此,assertEquals(contactPage.getName(), 'User A')会变为"check that name equals to 'user A'"这种描述
3.屏幕捕获
在捕获屏幕是,需要调用 WebDriverAdapter.setAdapter方法,并且在每一个标注@Before注解的测试方法中使用WebDriver实例
import org.sahagin.runlib.external.adapter.webdriver.WebDriverAdapter; public class SampleTest { @Before public void setUp() { wd = new FirefoxDriver(); WebDriverAdapter.setAdapter(wd); ... } }
如果使用Appium,则使用AppiumAdapter。你也可以使用SelendroidAdapter和IOSDriverAdapter、
import org.sahagin.runlib.external.adapter.appium.AppiumAdapter; public class SampleTest { @Before public void setUp() { wd = new AndroidDriver(...); AppiumAdapter.setAdapter(wd); ... } }
如果使用FluentLenium,则使用FluentLeniumAdapeter。
import org.sahagin.runlib.external.adapter.fluentlenium.FluentLeniumAdapter; public class SampleTest extends FluentTest { @Before public void setUp() { FluentLeniumAdapter.setAdapter(this); ... } }
4.创建配置文件sahagin.yml
穿件sahagin.yml文件在java proejct的根目录。改变testDir 的值为你的测试文件所放的目录
# Sahagin configuration file written by YAML style. java: # Root directory of test Java files # (absolute path or relative path from this YAML file). # All test methods and methods annotated by @TestDoc # must be located under this directory. testDir: src/test/java
5.运行测试用例,生成报告
运行JUnit测试用例
如果使用Maven,运行“mvn test”,注意Maven执行时只会测试默认的"Test*.java","*Test.java","*TestCase.java"文件
如果使用Gradle,运行"gradle test"
如果使用jar文件,使用javaagent参数进行运行
测试报告,在运行测试后,HTML报告 sahagin-report/index.html会被生成在sahagin.yml所在的目录。
6.设置enkins插件
Jekins Sahagin 插件会在Jenkins上显示由Sahagin生成的HTML报告。首先,在点击配置管理->插件管理->可使用的,找到Sahagin plugin 点击安装它。重启Jenkins。
然后去项目配置页面,选择post-build Actions 中的PublishSahagin HTML report,然后添加sahagin.yml
执行利用之前创建的pom.xml或者build.gradle文件,进行Junit测试,关联Sahagin报告列表会被添加到Jenkins构建结果页面上。
注意 仅仅使用Jenkins插件是不会生成报告的,你需要完成所有的步骤从1.sahagin.jar依赖和JVM参数配置。也要注意sahagin.jar的版数要和Jenkins Sahagin插件相同。
如果你使用Publish Junit test result report 作为 Post-build Action,添加Additional test report feature “Add Sahagin test report link to each test result”
在运行测试后,Sahagin 报告链接会被添加到Junit each test result page