C#使用Appium.WebDriver4.3.1如何顺序执行多测试用例不中途关闭应用
问题解决办法
核心原因
你遇到的每个测试方法前后重复启停App的问题,根源是MSTest框架的注解执行逻辑:
[TestInitialize]标记的方法会在每一个[TestMethod]执行前触发一次[TestCleanup]标记的方法会在每一个[TestMethod]执行后触发一次
也就是说你当前的配置下,每跑一个测试用例都会走一次「初始化Driver启动App→执行用例→关闭App」的流程,和Appium的Reset配置无关。
修改方案
将单次执行所有测试用例才需要跑一次的启动、关闭逻辑,替换为类级别的初始化/清理注解[ClassInitialize]、[ClassCleanup]即可,修改后完整代码如下:
[TestClass] public class Walkthrough { private static string _appPath = @"PathToMyApp\MyApp.apk"; // 注意_driver要改为静态,因为ClassInitialize方法是静态的 private static AppiumDriver<AndroidElement> _driver; // 类初始化:整个测试类运行期间仅执行1次,在所有测试方法运行前触发 [ClassInitialize] public static void ClassSetup(TestContext context) { var appiumOption = new AppiumOptions(); appiumOption.AddAdditionalCapability(MobileCapabilityType.App, _appPath); appiumOption.AddAdditionalCapability(MobileCapabilityType.PlatformName, "Android"); appiumOption.AddAdditionalCapability(MobileCapabilityType.DeviceName, "Pixel 4"); appiumOption.AddAdditionalCapability(MobileCapabilityType.PlatformVersion, "12"); appiumOption.AddAdditionalCapability(MobileCapabilityType.Udid, "99171FFAZ000GE"); // 该配置保留,作用是不重置App数据,保持上次运行的状态 appiumOption.AddAdditionalCapability(MobileCapabilityType.NoReset, true); appiumOption.AddAdditionalCapability(MobileCapabilityType.FullReset, false); _driver= new AndroidDriver<AndroidElement>(new Uri("http://127.0.0.1:4723/wd/hub"), appiumOption); // 可选:加启动等待,避免App还没加载完成就跑用例 _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10); } // 类清理:整个测试类运行期间仅执行1次,在所有测试方法运行完后触发 [ClassCleanup] public static void ClassCleanup() { if (_driver != null) { _driver.CloseApp(); _driver.Quit(); _driver.Dispose(); } } [TestMethod] public void TestMethod1() { _driver.FindElement(By.ID("ELEMENT1")).Click(); } [TestMethod] public void TestMethod2() { _driver.FindElement(By.ID("ELEMENT2")).Click(); } }
补充注意事项
- 如果你的测试用例之间存在执行顺序依赖,可以通过给
[TestMethod]添加[Priority(数字)]注解指定顺序,数字越小优先级越高 - 如果需要跨多个测试类共享同一个Driver实例,可以将初始化逻辑放到标记了
[AssemblyInitialize]的方法中,对应清理逻辑用[AssemblyCleanup]
内容的提问来源于stack exchange,提问作者Ghasem Tabatabaei
相关产品推荐
相关产品推荐

