2

UIテストを行っています。最初は Firefox ブラウザー ドライバーのみから始めたので、クラスの下で WebDriverWait 変数を宣言し、コード ブロックに示されているように [SetUp] メソッドの下でそれを割り当て、すべてのテストでそれを使用できるようにしました。

public class FirefoxTest {
public IWebDriver _driver;
public WebDriverWait _wait;
    [SetUp]
    public void SetupTest() {
          _driver = new FirefoxDriver();
          _wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(30));
    }

次に、 [TestCaseSource(typeof(WebDriverFactory), "Drivers")] 属性で指定して、さらに BrowserDriver を組み込んでみました。そのため、_driver 変数を [SetUp] から移動する必要があり、_wait 変数はどの _driver を使用するかわかりません。

私はすべてのテストでそれをインスタンス化しようとしましたが、それは繰り返しであり、それらのテストは WebDriverWait 変数も必要とするメソッドを使用し、WebDriverWait 変数が既に宣言されているため、別のテストがそれらを実装しようとすると、それらのメソッドは 2 回目に実行されませんでした。

私の質問は、ドライバーが [TestCase] として指定されている場合、WebDriverWait や、​​ドライバーに依存し、通常は [SetUp] や [TearDown] に記述されている driver.Quit() などをどこでインスタンス化できるかということです。

今、私は次のように書かれたテストを持っています

[TestCaseSource(typeof(WebDriverFactory), "Drivers")]
public void SomeTest(IWebDriver driver){
    driver.Navigate().GoTo....
}

問題は、次に含める必要があることです

WebDriverWait _wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
driver.Quit()

すべてのテストで _wait を使用し、テストで再利用されるすべてのメソッドで _wait を使用します。[セットアップ]と[分解]で持っていたもの。

4

2 に答える 2