当前位置:   article > 正文

软件测试实习0624-TestNG依赖测试

软件测试实习

TestNG依赖测试

有时候,你可能需要在一个特定的顺序调用方法在测试案例,或者你想分享一些数据和方法之间的状态。testNg允许指定依赖

使用属性dependsOnMethods@Test注释OR

使用属性dependsOnGroups@Test注解

使用属性dependsOnMethods例子
创建一个Java类进行测试为MessageUtil.java 
  1. package depends;
  2. public class MessageUtil {
  3. private String message;
  4. // Constructor
  5. // @param message to be printed
  6. public MessageUtil(String message) {
  7. this.message = message;
  8. }
  9. // prints the message
  10. public String printMessage() {
  11. System.out.println(message);
  12. return message;
  13. }
  14. // add "Hi!" to the message
  15. public String salutationMessage() {
  16. message = "Hi!" + message;
  17. System.out.println(message);
  18. return message;
  19. }
  20. }
创建测试案例类

创建一个Java测试类为DependencyTestUsingAnnotation.java.

添加方法testPrintMessage(),testSalutationMessage()initEnvironmentTest()到测试类

添加属性dependsOnMethods= { "initEnvironmentTest" }to the @Test注释oftestSalutationMessage()方法

  1. package depends;
  2. import org.testng.Assert;
  3. import org.testng.annotations.Test;
  4. public class DependencyTestUsingAnnotation {
  5. String message = "Manisha";
  6. MessageUtil messageUtil = new MessageUtil(message);
  7. @Test
  8. public void testPrintMessage() {
  9. System.out.println("Inside testPrintMessage()");
  10. message = "Manisha";
  11. Assert.assertEquals(message, messageUtil.printMessage());
  12. }
  13. @Test(dependsOnMethods = { "initEnvironmentTest" })
  14. public void testSalutationMessage() {
  15. System.out.println("Inside testSalutationMessage()");
  16. message = "Hi!" + "Manisha";
  17. Assert.assertEquals(message, messageUtil.salutationMessage());
  18. }
  19. @Test
  20. public void initEnvironmentTest() {
  21. System.out.println("This is initEnvironmentTest");
  22. }
  23. }

</pre><pre>
创建testNG.xml

  1. <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
  2. <suite name="Suite1">
  3. <test name="test1">
  4. <classes>
  5. <class name="DependencyTestUsingAnnotation" />
  6. </classes>
  7. </test>
  8. </suite>

测试结果


使用属性dependsOnGroups的例子

也可以依赖于整个群组的方法

创建一个Java类进行测试为MessageUtil.java 

  1. package depends;
  2. public class MessageUtil {
  3. private String message;
  4. // Constructor
  5. // @param message to be printed
  6. public MessageUtil(String message) {
  7. this.message = message;
  8. }
  9. // prints the message
  10. public String printMessage() {
  11. System.out.println(message);
  12. return message;
  13. }
  14. // add "Hi!" to the message
  15. public String salutationMessage() {
  16. message = "Hi!" + message;
  17. System.out.println(message);
  18. return message;
  19. }
  20. }

创建测试案例类

创建一个Java测试类说依赖TestUsingAnnotation.java.

添加测试方法testPrintMessage(),testSalutationMessage()initEnvironmentTest()测试类和他们的组"初始化"

添加属性dependsOnMethods= { "init.*" }to the @Test注释testSalutationMessage()方法 

  1. package depends;
  2. import org.testng.Assert;
  3. import org.testng.annotations.Test;
  4. public class DependencyTestUsingAnnotation {
  5. String message = "Manisha";
  6. MessageUtil messageUtil = new MessageUtil(message);
  7. @Test(groups = { "init" })
  8. public void testPrintMessage() {
  9. System.out.println("Inside testPrintMessage()");
  10. message = "Manisha";
  11. Assert.assertEquals(message, messageUtil.printMessage());
  12. }
  13. @Test(dependsOnGroups = { "init.*" })
  14. public void testSalutationMessage() {
  15. System.out.println("Inside testSalutationMessage()");
  16. message = "Hi!" + "Manisha";
  17. Assert.assertEquals(message, messageUtil.salutationMessage());
  18. }
  19. @Test(groups = { "init" })
  20. public void initEnvironmentTest() {
  21. System.out.println("This is initEnvironmentTest");
  22. }
  23. }

在这个例子中,testSalutationMessage()被声明为根据任何一组匹配正则表达式“的init*”,这保证了,一种方法,testPrintMessage的()和initEnvironmentTest()将始终前testSalutationMessage()被调用。

如果一个方法失败,取决于你有一个很难依赖于它(alwaysRun=false,这是默认的),没有标记的方法依赖于它的失败,但作为跳过。跳过的方法将被报告为例如在最终报告(在HTML中,既不是红也不是绿的颜色),这是很重要的,因为跳过的方法不一定是失败。






创建testng.xml
  1. <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
  2. <suite name="Suite1">
  3. <test name="test1">
  4. <classes>
  5. <class name="depends.DependencyTestUsingAnnotation" />
  6. </classes>
  7. </test>
  8. </suite>
测试结果

dependsOnGroupsVs dependsOnMethods
  • 在使用组,我们不再面临重构的问题。只要我们不修改dependsOnGroups或组属性,我们的测试将继续运行,设立适当的依赖。

  • 每当一个新的方法需要添加依存关系图中,我们需要做的就是把它正确的组中,并确保它依赖于正确的组。我们不需要修改任何其他方法。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/532312
推荐阅读
相关标签
  

闽ICP备14008679号