Как настроить переменную URL для использования в платформе NUnit / SpecFlow - PullRequest
1 голос
/ 09 ноября 2011

Я хотел бы расширить тестовый набор, который я написал в SpecFlow, чтобы он был немного более расширяемым, поэтому я хотел бы в настройке создать базовую переменную URL, которую я могу установить в зависимости от используемого флагана монахиня бегун.Поэтому, если я отправляю Test в качестве тега, я хочу, чтобы какое-либо значение URL-адреса было установлено на «http://test/"», или для Development было установлено значение URL-адреса на «http://dev/". *. Я знаю, что глобальные переменные бесполезны в NUnit, большинство моих предыдущих сценариев былоPerl, где даже тогда я использовал его в редких случаях.Я не уверен, что я делаю это правильно, хотя я получаю код для компиляции без ошибок, URL никогда не будет установлен.Что я делаю, так это проверяю, когда запускается бегун NUnit:

private static testInfoConfiguration myUrl;
public static string baseUrl = string.Empty;
[BeforeFeature("Test")]
public static void BeforeFeature_Test()
{

    myUrl = new testInfoConfiguration();
    baseUrl = myUrl.setBaseUrl("Test");
}

, который вызывает это:

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;
    }

Затем я хочу вызвать переменную URL позже:

[When(@"I access the Web Site")]
public void WhenIAccessTheWebSite()
{
    string kcUrl = baseUrl + "/knowledge/Pages/default.aspx";
    driver.Navigate().GoToUrl(kcUrl);

Когда я вызываю переменную URL, она все еще пуста.Есть ли способ сделать это?Я все еще изучаю C #, NUnit и SpecFlow, поэтому я, вероятно, просто не смотрю на правильный аспект этого, где я иду не так.Или просто не понимаете, как установить переменную таким образом.

Редактировать: Настройка существующего кода

1 Ответ

2 голосов
/ 09 ноября 2011

В этом блоке кода:

private static testInfoConfiguration myUrl; 
public string baseUrl = "";     
[BeforeFeature("Test")] 
public static string BeforeFeature_Test() 
{ 

    myUrl = new testInfoConfiguration(); 
    string baseUrl = myUrl.setBaseUrl("Test"); 
    return baseUrl; 
} 

Вы определяете baseUrl дважды: один раз в области действия метода и один раз в области действия класса.

Когда вы находитесь в этом блоке кода:

string kcUrl = baseUrl + "/knowledge/Pages/default.aspx";      
driver.Navigate().GoToUrl(kcUrl);   

Вы имеете в виду (что я предполагаю) поле экземпляра baseUrl, которое вы никогда не устанавливали.

Попробуйте следующее:

private static testInfoConfiguration myUrl; 
public static string baseUrl = string.Empty;     
[BeforeFeature("Test")] 
public static void BeforeFeature_Test() 
{ 
    myUrl = new testInfoConfiguration(); 
    baseUrl = myUrl.setBaseUrl("Test");       
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...