Skip to content

DuskDrum/caseGenerator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

caseGenerator

quickly generate test cases

梳理代码解析流程,形成通用的自动实现测试用例功能。

1. 解析流程

解析流程使用parser.ParserFile从文件维度逐一解析不同文件逐行进行解析,使用walk一行接一行遍历的解析,将有可能用到的属性都存储起来。 某些情况,比如说方法调用时传递了指针,那么需要遍历解析去判断这个属性做了什么改变规则.

按照go语言结构中,不同的数据类型可能会有不一样的问题,需要穷举出所有的数据类型,抽象出公共的逻辑成为方法,最终要支持Walk方法。 比如说每个节点都实现Node接口,Node接口定义各自需要遵守的规则,比如说遇到指针作为入参,那么验证是nil的情况

● 指针:可能是nil;作为方法参数传递需要遍历获取其有可能的取值

● jsonString:需要反序列化回去

● 列表:有可能是空列表;一个元素;多个元素

● map:对应的key可以取到值;对应的key取不到值

● struct:最终的属性都还是基本类型,需要能够支持解析属性、属性的属性

● string、int、bool:能否都转为json

● channel:最好可以支持压测

● 类型断言:修改入参类型,不修改入参类型

● if:解析出不同的条件可能性以及逻辑,判断能不能直接就拿到返回值

● switch:判断case的值以及里面的逻辑,判断fallthrough

● for:判断多条、一条、0条记录;判断是否有取值问题

● fori:

● range:

● 匿名行数:和函数一样的处理方式,要多带入几个参数

● goroutine:判断是否有并发问题

● defer代码块:判断最终是否能走到;配合recover使用时,是不是有异常

2. 生成代码

生成代码的方式

● go:generate 生成对应框架的代码 ● mockey

3. 流程图

img.png

4. 开发任务

  • 解析request
  • 解析receiver
  • 解析response
  • 解析类型断言
  • 解析赋值
  • 解析condition
  • 完成所有的特殊情况的example
  • 完善readme
  • 打tag包,进行远程调用使用
  • 怎么更加可拓展
  • 怎么远程调用

About

quickly generate test cases

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages