手把手教你TestComplete_数据库外键关联问题

 

 

 

最近遇到一个新问题,以前的系统设计一般都会先做数据库设计,即便是到了java的hibernate以后,虽然说是对象为核心,而不再是数据库为核心了,但是通常也是做好了数据库设计以后,用插件生成的对象。这次,真的以对象为核心设计了。Grails的,要知道表字段是什么意思,自己去看域下面的groovy文件中的注释吧。Oh,no。。。。。。

 

 

做性能测试,需要增删改数据,这可必须知道表字段之间的外键关联关系,这可如何是好。开发说自己看groovy文件吧,这这这。。。。。。崩溃是我不变的信仰,为神马受伤的总是俺。本来想找找插件的。算了,懒惰那是必须的,懒得找,反正不是在用TC吗,自己写一个算了。如果让我重新选择,我一定搜搜插件去,懒惰是要付出代价的。

 

 

好了,言归正传。看看是啥情况吧。使用grails的命令,可以生成一个ddl.sql,外键的定义大概是这样的:

 

alter table table1 add constraint FK4A1F43F328ED9437 foreign key (field1) references table2;

 

所以程序就分成了两个部分:

 

第一个部分是从ddl文件中过滤出外键部分,得到:

Table1(field1),table2

写入临时文件,这个不难;

 

第二部分就非常的纠结了,大家看看我当时对代码的测试用例,就能知道这个算法有多麻烦了

 

 

用例1:

A(01),B

 

A.01

         B

 

用例2:

B(01),B

 

B.01

         B

 

用例3:

A(01),B

A(02),C

 

A.01.02

         C

         B

 

用例4:

A(01),B

A(02),C

B(03),D

 

A.01.02

         C

         B.03

                   D

 

用例5:

A(01),B

A(02),C

B(03),D

B(01),B

 

A.01.02

         C

         B.03

                   D

 

B.01

         B

 

用例6:

A(01),B

A(02),C

D(03),E

B(01),B

 

A.01.02

         C

         B

 

D.03

         E

 

B.01

         B

 

用例7:

A(01),B

A(02),C

G(06),A

 

G.06

         A.01.02

                   C

                   B

 

用例8:

A(01),B

A(02),C

D(03),E

B(04),B

G(05),A

C(06),F

 

G.05        

         A.01.02

                   C.06

                            F

                   B

 

D.03

         E

 

B.04

         B

 

用力9:

A(01),B

A(02),C

B(03),D

D(04),E

B(05),F

G(06),A

B(07),B

H(08),A

J(09),K

H(10),I

I(11),B

 

G.06

         A.01.02

                   C

                   B.03.05

                            F

                            D.04

                                     E

 

H.08.10

         I.11

                   B.03.05

                            F

                                     D.04

                                               E

         A

 

J.09

         K

 

B.07

         B

 

 

当然我也知道生成图片更直观,但是山寨嘛,凑活着能用就行了。别尽善尽美了。

 

 

看了上面的这些用例,大致可以看到几种情况:

 

第一种情况:

本表的关联,比如一张表记录了菜单,菜单表的一个字段是父节点id,自然这个字段肯定得在菜单表的id里面存在的。

 

第二种情况:

A(01),B

A(02),C

 

生成依赖关系:

A.01.02

         C

         B

 

不但的把C插入到A后面,还得算出前面的tab字符个数,同时还得把关联的A表字段02加进来

 

 

第三种情况:

A(01),B

A(02),C

G(06),A

 

这个更麻烦一点,执行到GA的时候,得把G放到最前面,然后后面的字串全部加上一个tab字符

 

 

第四种情况:

A(01),B

B(03),D

D(04),E

 

H(10),I

I(11),B

 

可以看到,HIB,但是B其实在上一段中是出现过的BDE,也就是说还得跟后面拼接上变成HIBDE,可以想到先得截出来子串,还得调整tab数量,反正是够呛。

 

 

简单的说,就是非常非常的琐碎麻烦。不过这只是完成了一半,后面一半也麻烦的要命,从groovy文件中,搜出字段定义,找到相应的注释,写回到输出文件中。有空再做吧。

 

 

附件: http://download.csdn.net/detail/Testingba/3591071

 

 

你可能感兴趣的:(数据库,Hibernate,测试,table,grails,groovy)