如何在测试类库中执行配置文件替换

时间:2014-08-14 13:36:05

标签: .net vb.net testing selenium nunit

如何根据构建配置/环境组合设置包含基于浏览器的集成测试的类库,以获得不同的配置选项?

我在.NET中有一个测试类库,它包含单元测试,集成测试和一些新的接受式Selenium测试。在过去的Web项目中,我已经完成了配置文件替换,因此我可以为不同的构建配置(Dev / Stage / Release等指定一组不同的配置值... )。我也知道我可以将测试库中使用的设置存储在App.config文件中,所以我假设类似的东西也可以用于类库,但是无法找到任何答案。

例如,当我在本地开发机器上运行Selenium验收测试时,我有一个特定的本地主机URL用于运行Selenium的网站(我运行Debug版本),但此URL不同在我的开发(和其他环境)。

我如何实现这一目标?

我已经对此做了一些研究,但没有具体回答这个问题。我发现的许多其他答案都与单元测试配置文件(Unit testing the app.config file with NUnit)或在运行时修改配置文件有关,这不是我想要的。唯一接近的是这个问题:How do I run my NUnit test cases using Selenium to run against different environments?但是给出的答案是很多自定义代码,如果添加了不符合我想要的新构建配置或环境,则需要维护这些代码。我希望(如果可能的话)配置文件替换解决方案,这样我可以在我的机器上运行,由没有工作室的QA运行,或者由TeamCity的CI服务器运行,作为后期的一部分构建过程。此外,配置文件替换还将使测试库与设置其余代码库的方式保持一致。

重要的是要注意,我 我只关心存储控制测试套件执行的值,并影响我的测试与站点的交互方式(例如,在实时运行测试时不执行会修改生产数据库的操作)。

以下是一个代码段,以帮助说明如何使用它:

Private _baseUrl As String
Private _driver As IWebDriver

<Setup()> _
Protected Overridable Sub Setup()
    'This config call will return a different value based on the project build (Dev / Stage / Live)
    _baseUrl = ConfigurationManager.AppSettings("BaseWebUrl")
    Dim options As New IE.InternetExplorerOptions()
    options.IgnoreZoomLevel = True
    _driver = New IE.InternetExplorerDriver("PathToIEExecutable", options)
End Sub

<TearDown()> _
Protected Overridable Sub TearDown()
    _driver.Quit()
End Sub

<Test(), Category("Acceptance")> _
Public Sub HomePage_NewUserVisit_ShouldSeeWelcomeMessage()
    Me.Driver.Navigate().GoToUrl(_baseUrl)

    Me.Driver.VerifyElementPresent("//body/div[@id='welcome-message']")

    Assert.AreEqual("This Website R0xor3s - Welcome", Me.Driver.Title, "Unexpected Title.")
End Sub

Protected ReadOnly Property Driver As IWebDriver
    Get
        Return _webDriver
    End Get
End Property

我正在使用NUnit(2.6.3)和Selenium WebDrivers(2.4.1)

0 个答案:

没有答案