如何根据构建配置/环境组合设置包含基于浏览器的集成测试的类库,以获得不同的配置选项?
我在.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)