51Testing软件测试论坛

标题: 如何依赖(dependsOn)别的类中的测试方法? [打印本页]

作者: pl02206984    时间: 2016-7-12 10:55
标题: 如何依赖(dependsOn)别的类中的测试方法?
情况是这样的,我在写了两个类,A类中写的是login的测试方法,B类中写的是logout的测试方法。
但是执行logout的时候,必须先执行A类中login的测试方法才可以,这个如何做到?
我要是用dependsOnMethods或者dependsOnGroups的时候,都会提示我找不到B类中的login方法,因为login方法在A类中啊。
求大神们解答下。

作者: pl02206984    时间: 2016-7-12 10:56
我曾经想过让A类也也是@test,但是发现不管用。还有,好吧,这个是testNG的问题了。。。。
作者: pl02206984    时间: 2016-7-12 11:33
没人吗?自己顶一下
作者: joykao    时间: 2016-7-12 16:16
这个是testng你没有用熟,你最好再去看一下,A,B测试类都执行了?你testng 的xml里面配置了?你要把执行的类全部放在xml中 ,http://www.yiibai.com/html/testng/
作者: pl02206984    时间: 2016-7-13 11:26
joykao 发表于 2016-7-12 16:16
这个是testng你没有用熟,你最好再去看一下,A,B测试类都执行了?你testng 的xml里面配置了?你要把执行的 ...

我现在只想执行B类中的logout,所以我没有在xml里面写A类的配置,因为要是写了,在运行xml的时候,会先执行A类中的login方法,但是我想的是执行B类的logout方法,但是因为有依赖关系才再执行A类中的login方法的。
作者: pl02206984    时间: 2016-7-13 11:54
joykao 发表于 2016-7-12 16:16
这个是testng你没有用熟,你最好再去看一下,A,B测试类都执行了?你testng 的xml里面配置了?你要把执行的 ...

我发现把他放到同一个类中,然后Login类中有login和logout,然后分组,login为in,logout为out,我在xml这么写的。
  1. <suite name="xyqb_test01">   
  2.     <test name="test_xyqb" >
  3.         <groups>
  4.             <run>
  5.                 <include name="out"/>
  6.             </run>
  7.         </groups>
  8.         <classes>
  9.                        <class name="test01.Login"></class>         
  10.         </classes>
  11.     </test>  
  12. </suite>
复制代码


但是还是报错
  1. DependencyMap::Method "Login.logout()[pri:0, instance:test01.Login@24a67]" depends on nonexistent group "in"
复制代码


这个是我在login这个类里面的注释
  1. @Test (groups={"in"})
  2.   public void login() throws InterruptedException, IOException{
  3. XXXXXXXXXXXXX
  4. }


  5. @Test(dependsOnGroups={"in"},groups={"out"})
  6.   public static void logout(){
  7. yyyyyyyy}

复制代码

作者: pl02206984    时间: 2016-7-13 11:55
joykao 发表于 2016-7-12 16:16
这个是testng你没有用熟,你最好再去看一下,A,B测试类都执行了?你testng 的xml里面配置了?你要把执行的 ...

我发现把他放到同一个类中,然后Login类中有login和logout,然后分组,login为in,logout为out,我在xml这么写的。
  1. <suite name="xyqb_test01">   
  2.     <test name="test_xyqb" >
  3.         <groups>
  4.             <run>
  5.                 <include name="out"/>
  6.             </run>
  7.         </groups>
  8.         <classes>
  9.                        <class name="test01.Login"></class>         
  10.         </classes>
  11.     </test>  
  12. </suite>
复制代码


但是还是报错
  1. DependencyMap::Method "Login.logout()[pri:0, instance:test01.Login@24a67]" depends on nonexistent group "in"
复制代码


这个是我在login这个类里面的注释
  1. @Test (groups={"in"})
  2.   public void login() throws InterruptedException, IOException{
  3. XXXXXXXXXXXXX
  4. }


  5. @Test(dependsOnGroups={"in"},groups={"out"})
  6.   public static void logout(){
  7. yyyyyyyy}

复制代码

作者: joykao    时间: 2016-7-14 12:13
你xml里面不要那么配置,你都写明了include什么什么group了。。。不需要这么写。。。
<groups >  
            <dependencies >  
                <group name="out" depends-on="in" />  
            </dependencies>  
        </groups>  
作者: pl02206984    时间: 2016-7-15 09:43
joykao 发表于 2016-7-14 12:13
你xml里面不要那么配置,你都写明了include什么什么group了。。。不需要这么写。。。
   
               ...

谢谢你前面的解答,运行成功,也就是说不但要在类中的方法前@test里注明依赖关系,在xml也要注明依赖关系,但是现在有个新问题,就如我最开始所说的,我要是创建两个类,一个类叫做Login,里面有一个login的测试方法,另一个类叫做logout,里面有一个logout的测试方法,代码如下
Login类的代码
  1. public class Login {
  2.         @Test (groups={"in"})
  3.         public void login(){
  4.         XXXXXXXXXXXXX
  5.         }
  6. }
复制代码


logout类的代码
  1. public class logout {
  2.         @Test(dependsOnGroups={"in"},groups={"out"})
  3.         public static void logout(){
  4.         yyyyyyyy
  5.         }
  6. }
复制代码


然后我在xml配置如下
  1. <suite name="xyqb_test01">   
  2.     <test name="test_xyqb" >
  3.                 <groups>
  4.                     <dependencies>
  5.                         <group depends-on="in" name="out"></group>
  6.                     </dependencies>
  7.                 </groups>

  8.         <classes>
  9.                        <class name="test01.Logout"></class>         
  10.         </classes>
  11.     </test>  
  12. </suite>
复制代码


这样的话还是有报错

  1. org.testng.TestNGException:
  2. DependencyMap::Method "logout.logout()[pri:0, instance:test01.logout@56dfcb]" depends on nonexistent group "in"
复制代码


其实说这么多我先做的是,我在执行B类中的一个测试方法的时候,在执行他之前要先执行A类中的一个测试方法,只有A类的测试方法执行成功了,才能执行B类里面的那个测试方法。
作者: pl02206984    时间: 2016-7-19 09:14
joykao 发表于 2016-7-14 12:13
你xml里面不要那么配置,你都写明了include什么什么group了。。。不需要这么写。。。
   
               ...

好吧,我问的不对吗?
作者: pl02206984    时间: 2016-7-19 09:14
joykao 发表于 2016-7-14 12:13
你xml里面不要那么配置,你都写明了include什么什么group了。。。不需要这么写。。。
   
               ...

好吧,我问的不对吗?
作者: pl02206984    时间: 2016-7-19 09:14
自己顶下




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2