# 自动化测试
**Repository Path**: B2b_Ay/auto_test
## Basic Information
- **Project Name**: 自动化测试
- **Description**: 基于testNg开发的一款自动化测试框架,项目初开,很多功能还正在完善阶段
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 2
- **Created**: 2022-06-15
- **Last Updated**: 2024-06-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 平台简介
1.内部测试接口。
2.log日志记录。
3.断言
4.自动输出测试报告
5.自定义可视化测试配置
6.监听重试机制正在开发尽情期待...
## 框架依赖Redis缓存,请装配好redis环境
`配置完成后打开application.yml修改redis板块下的host和password即可`,(注切记`:`后面需要带一个空格)
`如:redis:?`和`redis: ?` 需要带空格
## 内部测试接口流程
一:程序运行主类HyhApplication
```
hyh auto test
│
├─annotation 自定义注解包
│ │
│ ├─TestApiDesc 自定义注解
│
├─aspectj AOP包
│ │
│ ├─TestApiDescAspect (用于拦截方法执行前后)
│
├─bean 远端接口返回数据解析包
│ │
│ ├─RespToLogin (登录接口返回的参数结构)
│
├─config 配置包
│ │
│ ├─ExtentTestNGIReporterListener (testNg自带美化界面,现版本已不再使用)
│ ├─如需使用美化界面请参考:如何配置ExtentTestNGIReporterListener美化界面
│ │
│ ├─FastJson2JsonRedisSerializer (JSON反序列化)
│ │
│ ├─MvcConfig (跨域配置)
│ │
│ ├─RedisConfig (redis配置)
│ │
│ ├─SaTokenConfigure (saToken拦截器)
│ │
│ ├─TestManager (储存用例成功以及失败的集合)
│
├─config 常量包
│ │
│ ├─Constants (普通常量状态码)
│ │
│ ├─HttpStatus (http请求常量状态码)
│
├─entity 实体包
│ │
│ ├─Bs (自定义查询类(与测试报告无关))
│ │
│ ├─LoginDto (请求远端登录接口的参数类)
│
├─exception 异常包
│ │
│ ├─custom (自定义异常包)
│ │
│ │ ├─BaseException (通用异常抛出)
│ │
│ │ ├─CustomException (自定义异常抛出)
│ │
│ ├─GlobalExceptionHandler (全局异常捕获,自定义异常被抛出后,可以在这里做处理)
│
├─listener 监听包
│ │
│ ├─MySaTokenListener (saToken监听,可以在登录后做逻辑处理)
│ │
│ ├─TestngListener (testNg监听,可以在流程测试后做逻辑处理)
│
├─redis 缓存包
│ │
│ ├─RedisCache (redis缓存应用)
│
├─request 请求包(相当于controller)(这个包主要用于内部测试)
│ │
│ ├─LoginRequest (普通的登录接口)
│ │
│ ├─QueryRequest (普通的查询接口)
│
├─service 逻辑处理包
│ │
│ ├─Impl (自定义异常包)
│ │
│ │ ├─LoginServiceImpl (ILoginService中的login方法的具体实现)
│ │
│ │ ├─StpInterfaceImpl (saToken权限模块)
│ │
│ ├─ILoginService (需要实现的方法)
│
├─testing 自动化测试包
│ │
│ ├─LoginTesting (测试登录)
│
├─testReport 自定义报告参数输出包
│ │
│ ├─ReportApiRequest (接口请求详情)
│ │
│ ├─ReportApiResponse (接口返回详情)
│ │
│ ├─ReportInfo (用例最终结果集)
│
├─util 工具类包
│ │
│ ├─text (字符串包)
│ │
│ │ ├─CharsetKit (字符集工具类)
│ │
│ │ ├─Convert (类型转换器)
│ │
│ │ ├─StrFormatter (字符串格式化)
│ │
│ ├─HttpUtil (封装好的post、get、delete、put请求)
│ │
│ ├─IdUtils (随机ID生成器)
│ │
│ ├─MailUtils (发送邮件)
│ │
│ ├─MessageUtils (国际化翻译包)
│ │
│ ├─R (通用返回类型)
│ │
│ ├─RandInfo (随机姓氏生成)
│ │
│ ├─SpringUtils (spring工具类可以获取上下文)
│ │
│ ├─StringUtils (字符串工具类)
│ │
│ ├─UtilException (异常工具类)
│ │
│ ├─UUID (UUID生成器)
│
├─resources 静态资源存放
│ ├─properties (静态资源)
│ │
│ │ ├─mail.properties (邮箱配置)
│ ├─static (静态资源)
│ │
│ ├─templates (HTML文件存放)
│ │
│ │ ├─index.html (自定义测试报告模板)
│ │
│ ├─application.yml (框架基础配置)
│ │
│ ├─test.xml (可运行的XML测试,当HyhApplication运行后,test.xml即可运行看到输出报告)
```
## 接口请求详情图片

## 接口返回详情图片

## 用例最终结果集图片

## 如何配置ExtentTestNGIReporterListener美化界面
`只需要在test.xml配置listener即可,当运行结束后,会在项目中生成test-output目录,打开即可看到美化界面`
`注(可能会出现css丢失的情况...)`

二:log日志记录
1.`Reporter.log()`:日志输出会记录到测试报告中,按从上到下的顺序依次打印
三:断言
1.`Assert.assertEquals(200,200)`:第一个参数为你的目标参数、第二个参数是返回参数
四:自定输出测试报告
## 满足了框架基础配置的调试后,2步生成用例报告
1.`第一步右键找到Run HyhApplication类`
2.`打开系统D盘查收测试报告`
4.
五:自定义可视化测试配置
1.`@TestApiDesc`自定义注解、可用于描述的参数内容有:
`apiName:接口名称`
`
apiUrl:接口路径`
`
apiMethod:接口请求`
`
apiRemark:接口描述...等等`
`如需自定义参数,在TestApiDesc类中添加你需要的描述,然后在对应的实体类中添加值并在LoginTesting类的#方法切入中#set值,再到index页面中,自定义css后显示该值即可`
2.`@Test`测试注解,当整合test.xml运行时,会把带有@Test注解的方法加载进来(注:需要配合test.xml中的加载方法体↓(看下面))
**如下:**
- 在test.xml中``指的是需要加载的类路径 而methods 下的``指的是该类下需要运行测试用例的方法,test.xml中的class name 指定的方法名必须对应该类中的方法名,如果方法名不一致,则该用例不会执行
- 
3.当以上的条件都满足时后,恭喜你,你已经掌握了运行用例的基本功
4.`testNg中的常用注解:可以百度搜,以下提供框架中使用的2种`
`@AfterMethod:每运行一个@Test测试用例后,都会执行一遍此方法`
`@AfterTest:当所有的@Test用例执行完毕后,最后便会执行此方法`
`更多testNg接口方法请参考:`https://blog.csdn.net/chengloveye/article/details/84900037`