I'd like to extend the Test Harness I have written in SpecFlow to be a bit more extensible, so what I would like to do is in the setup create a base URL variable that I can set depending on a flag I use on the Nunit runner. So if I send in Test as a Tag I want some URL value to be set to "http://test/" or for Development to set URL to "http://dev/". I know Global variables are not useful in NUnit, most of my previous scripting was in Perl where even then I used it on rare occasions. I'm not sure I am doing this right, although I get the code to compile without errors the URL never get's set. What I am doing is a check when the NUnit runner starts:
private static testInfoConfiguration myUrl; public static string baseUrl = string.Empty; [BeforeFeature("Test")] public static void BeforeFeature_Test() { myUrl = new testInfoConfiguration(); baseUrl = myUrl.setBaseUrl("Test"); } Which calls this:
public class testInfoConfiguration { public string setBaseUrl(string envType) { string envUrl; if (envType == "Test") { envUrl = "http://testweb/"; return envUrl; } if (envType == "Prod") { envUrl = "http://www/"; return envUrl; } envUrl = "http://devweb/"; return envUrl; } I then want to make a call to the URL variable later on:
[When(@"I access the Web Site")] public void WhenIAccessTheWebSite() { string kcUrl = baseUrl + "/knowledge/Pages/default.aspx"; driver.Navigate().GoToUrl(kcUrl); When I call the URL variable it's still empty. Is there a way to do this? I'm still learning C#, NUnit and SpecFlow so I am probably just not looking at the right aspect of this to where I am going wrong. Or just really not understanding how to set a variable in this manner.
Edit: Adjusting the existing code