commit
d38b1fbd59
20
README.md
20
README.md
|
@ -2,6 +2,15 @@
|
||||||
## 简介
|
## 简介
|
||||||
autest为Auxiliary Test的英文缩写意为辅助测试,其中包括日常测试工作中能用到的工具,包括测试用例编写工具,简化Web UI自动化测试工具以及测试报告生成工具和日常工作中使用的小工具等。开发这个项目的目的在于使用简单的代码来简化我们测试日常中较为繁杂的操作,使测试的效率得到一定的提升。
|
autest为Auxiliary Test的英文缩写意为辅助测试,其中包括日常测试工作中能用到的工具,包括测试用例编写工具,简化Web UI自动化测试工具以及测试报告生成工具和日常工作中使用的小工具等。开发这个项目的目的在于使用简单的代码来简化我们测试日常中较为繁杂的操作,使测试的效率得到一定的提升。
|
||||||
|
|
||||||
|
目前工具已打包到maven中央仓库,可按以下代码添加依赖:
|
||||||
|
```xml
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.gitee.pyqone</groupId>
|
||||||
|
<artifactId>autest</artifactId>
|
||||||
|
<version>2.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
|
||||||
### autest设计初衷
|
### autest设计初衷
|
||||||
autest比起说是一个工具,不如说是我在工作中的一个总结,在我看来,测试工作就是一个机械式的工作,既然是机械式的工作就应该用机械来代替,抱着这个想法,于是我就启动了这个项目。工具第一版实际上是我自己为简化Web UI自动化脚本而做的一个对selenium代码简单的封装,但随着工作经验的累积,我在工作中越发地发现测试工作中很多的地方都是重复的工作,但这个重复的工作又不得不去做,并且做这件重复的事情花的时间还不是一般的长,比如编写测试用例、编写测试报告,于是我便下定决心要把这些工具整合到我的代码中。
|
autest比起说是一个工具,不如说是我在工作中的一个总结,在我看来,测试工作就是一个机械式的工作,既然是机械式的工作就应该用机械来代替,抱着这个想法,于是我就启动了这个项目。工具第一版实际上是我自己为简化Web UI自动化脚本而做的一个对selenium代码简单的封装,但随着工作经验的累积,我在工作中越发地发现测试工作中很多的地方都是重复的工作,但这个重复的工作又不得不去做,并且做这件重复的事情花的时间还不是一般的长,比如编写测试用例、编写测试报告,于是我便下定决心要把这些工具整合到我的代码中。
|
||||||
|
|
||||||
|
@ -158,7 +167,7 @@ public void addCase() {
|
||||||
在自动化脚本编写的实践过程中,我发现selenium有以下的问题:
|
在自动化脚本编写的实践过程中,我发现selenium有以下的问题:
|
||||||
1. WebDriver类构造比较麻烦,特别是指向浏览器驱动的代码,不容易记住,每次编写脚本时都需要去复制之前的代码
|
1. WebDriver类构造比较麻烦,特别是指向浏览器驱动的代码,不容易记住,每次编写脚本时都需要去复制之前的代码
|
||||||
2. 浏览器配置不方便,需要记住浏览器配置相关的代码,该代码没有智能提示
|
2. 浏览器配置不方便,需要记住浏览器配置相关的代码,该代码没有智能提示
|
||||||
3. 元素定位方式无法专门维护(selenium提供了一种维护元素定位方式的代码,也是现在流行一时的PO模式,但该模式我并未对其深究,因为我仍发现该模式在调用时仍不方便)
|
3. 元素定位方式无法专门维护(selenium提供了一种维护元素定位方式的代码,也是现在流行一时的PO模式,但该模式我并未对其深究,因为我仍发现该模式在调用时仍不方便,后面我会提到)
|
||||||
4. 遇到存在iframe标签的元素时,需要不断地切换窗体,在切换频繁时容易出错
|
4. 遇到存在iframe标签的元素时,需要不断地切换窗体,在切换频繁时容易出错
|
||||||
5. 进行元素操作时会因为各种各样的问题而报错,由于元素操作是独立的,所以需要为每一个元素操作都做一次判断,导致代码冗余
|
5. 进行元素操作时会因为各种各样的问题而报错,由于元素操作是独立的,所以需要为每一个元素操作都做一次判断,导致代码冗余
|
||||||
6. 等待机制使用便捷,同样需要进行封装
|
6. 等待机制使用便捷,同样需要进行封装
|
||||||
|
@ -358,8 +367,7 @@ public void oprateElement() {
|
||||||
${rs(CH,2, 3)} | 13000000000 | ${time()}
|
${rs(CH,2, 3)} | 13000000000 | ${time()}
|
||||||
${rs(CH,2, 3)} | 13000000001 | ${time(-1d)}
|
${rs(CH,2, 3)} | 13000000001 | ${time(-1d)}
|
||||||
${rs(CH,2, 3)} | 13000000002 | ${time(-2d)}
|
${rs(CH,2, 3)} | 13000000002 | ${time(-2d)}
|
||||||
|
其中使用“${}”括起来的内容表示使用公式,该公式可自定义,具体可以参考Wiki中对数据驱动公式的解释。
|
||||||
其中使用“${}”括起来的内容表示使用公式,该公式可自定义。
|
|
||||||
|
|
||||||
#### 3.2 构造数据并使用
|
#### 3.2 构造数据并使用
|
||||||
定义数据驱动文件后,便可结合TestNG框架,在@DataProvider中对数据驱动进行构造:
|
定义数据驱动文件后,便可结合TestNG框架,在@DataProvider中对数据驱动进行构造:
|
||||||
|
@ -532,6 +540,7 @@ http.url("http://127.0.0.1:9000/find/findpreson")
|
||||||
.putHead(HeadType.CONTENT_TYPE_JSON)
|
.putHead(HeadType.CONTENT_TYPE_JSON)
|
||||||
.encoding("UTF-8");
|
.encoding("UTF-8");
|
||||||
```
|
```
|
||||||
|
具体用法可参考Wiki对接口工具的介绍。
|
||||||
|
|
||||||
### 5 数据库工具
|
### 5 数据库工具
|
||||||
同接口一样,我对数据的操作也涉猎不深,目前数据库工具只对jdbc执行SQL这一块进行了封装,简化了执行SQL的代码以及连接数据库的代码。
|
同接口一样,我对数据的操作也涉猎不深,目前数据库工具只对jdbc执行SQL这一块进行了封装,简化了执行SQL的代码以及连接数据库的代码。
|
||||||
|
@ -598,11 +607,12 @@ public void action() {
|
||||||
["3", "000003", "100003", "王五"]
|
["3", "000003", "100003", "王五"]
|
||||||
["4", "000004", "100004", "赵六"]
|
["4", "000004", "100004", "赵六"]
|
||||||
```
|
```
|
||||||
在代码中,使用到了表数据类TableData,该类可用于存储同数据类型的表数据。
|
在代码中,使用到了表数据类TableData,该类可用于存储同数据类型的表数据,具体用法可在Wiki中进行查找。
|
||||||
|
|
||||||
### 6 其他工具
|
### 6 其他工具
|
||||||
除以上介绍到的主要工具外,在项目中还定义了一些小工具,这些工具可用于造数据,简化复杂的操作等,故将这一部分的代码也进行了封装,使其与上面介绍的大工具联系更紧密。
|
除以上介绍到的主要工具外,在项目中还定义了一些小工具,这些工具比较简单,但也经常使用,故将这一部分的代码也进行了封装,使其与上面介绍的大工具联系更紧密。
|
||||||
|
|
||||||
|
这里对这些工具进行简单的介绍,具体的用法可参考Wiki的介绍。
|
||||||
* 日期加减工具(Time):可根据日期单位,对设定的时间进行增减操作,并按照指定的格式进行输出。
|
* 日期加减工具(Time):可根据日期单位,对设定的时间进行增减操作,并按照指定的格式进行输出。
|
||||||
* 随机字符串工具(RandomString):用于根据指定的字符串池,随机从字符串池中抽取字符串,拼接指定长度的随机字符串并返回的工具
|
* 随机字符串工具(RandomString):用于根据指定的字符串池,随机从字符串池中抽取字符串,拼接指定长度的随机字符串并返回的工具
|
||||||
* 常用随机内容返回工具(PresetString):用于返回常用的,需要随机返回的词语。包括随机姓名、随机手机号码和随机身份证号等。
|
* 常用随机内容返回工具(PresetString):用于返回常用的,需要随机返回的词语。包括随机姓名、随机手机号码和随机身份证号等。
|
||||||
|
|
41
pom.xml
41
pom.xml
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
<groupId>com.gitee.pyqone</groupId>
|
<groupId>com.gitee.pyqone</groupId>
|
||||||
<artifactId>autest</artifactId>
|
<artifactId>autest</artifactId>
|
||||||
<version>2.0.0-RELEASE</version>
|
<version>2.0.0</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<url>https://gitee.com/pyqone/autest</url>
|
<url>https://gitee.com/pyqone/autest</url>
|
||||||
|
@ -246,33 +246,22 @@
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
<artifactId>maven-deploy-plugin</artifactId>
|
||||||
<version>2.7</version>
|
<version>2.7</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-gpg-plugin</artifactId>
|
||||||
|
<version>1.6</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>sign-artifacts</id>
|
||||||
|
<phase>verify</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>sign</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>oss-pyq-release</id>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-gpg-plugin</artifactId>
|
|
||||||
<version>1.6</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>sign-artifacts</id>
|
|
||||||
<phase>verify</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>sign</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
<snapshotRepository>
|
<snapshotRepository>
|
||||||
<id>oss-pyq-release</id>
|
<id>oss-pyq-release</id>
|
||||||
|
|
Loading…
Reference in New Issue