在实际测试过程中,我们经常会遇到这样的情况,开发由于某些原因导致一些模块进度延后,而你的自动化测试脚本已经提前完成,这样就会有部分模块测试,有部分模块不能进行测试。这就需要我们暂时不让一些test case执行。今天宏哥主要讲解的就是在工作中遇到这种情况如何处理,不影响你的测试进度。
①代码注销不执行测试用例区域。
②去除不执行测试用例前面@Test注释,这样testNG运行就不会运行到这部分的代码。
③testNG提供了一个enabled的参数,可以设置布尔型,true表示执行该方法,false表示不执行该测试用例。
第一种和第二种方法很简单,这里宏哥就做赘述,这里主要讲解和分享第三种方法。
为了节约时间,宏哥就不做新的测试场景,直接利用上一篇中测试百度搜索功能的代码,只要稍稍地改动一个地方就可以了。

package library;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;/** * @author 北京-宏哥 * * @公众号:北京宏哥 * * 《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程) * * 2022年3月07日 */public class TestDepend { WebDriver driver; @BeforeClass public void setup(){ System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe"); driver = new ChromeDriver(); driver.manage().window().maximize(); } @Test public void openBaidu() throws InterruptedException{ driver.get("https://www.baidu.com"); Thread.sleep(2000); System.out.println(driver.getTitle()); //assertTrue(driver.getTitle() == "百度一下,你就知道"); } @Test(dependsOnMethods={"openBaidu"}) public void testSearch() throws InterruptedException{ driver.findElement(By.id("kw")).sendKeys("Selenium"); driver.findElement(By.id("su")).click(); Thread.sleep(1000); } @Test(dependsOnMethods={"testSearch"},enabled=false) public void testSearch2() throws InterruptedException{ driver.findElement(By.id("kw")).clear(); driver.findElement(By.id("kw")).sendKeys("Selenium+Java"); driver.findElement(By.id("su")).click(); Thread.sleep(1000); } @AfterClass public void tearDown() throws InterruptedException{ Thread.sleep(3000); driver.quit(); } }
1.运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:
上面有三个测试用例,运行后可以看到报告显示执行了两个测试用例。

2.运行代码后电脑端的浏览器的动作,如下小视频所示:
好了,今天时间也不是很早了,宏哥就讲解和分享到这里,感谢您耐心的阅读!
