【问题标题】:How to set up a URL variable to be used in NUnit/SpecFlow framework如何设置要在nunit / specflow框架中使用的URL变量
【发布时间】:2011-12-24 20:11:04
【问题描述】:

我想扩展我在 SpecFlow 中编写的测试工具,使其更具可扩展性,所以我想做的是在设置中创建一个基本 URL 变量,我可以根据我使用的标志进行设置在 Nunit 跑步者上。因此,如果我将测试作为标记发送,我希望将某个 URL 值设置为“http://test/”,或者让开发人员将 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,所以我可能只是没有从正确的方面来看我出错的地方。或者只是真的不明白如何以这种方式设置变量。

编辑:调整现有代码

【问题讨论】:

    标签: c# nunit automated-tests specflow


    【解决方案1】:

    在这段代码中:

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

    【讨论】:

    • 这绝对让我更接近,感谢我仍然掌握的范围课程。虽然我发现字符串 kcUrl = baseUrl 以一个空的 baseUrl 结尾。这是我在 setBaseUrl 函数中的返回吗?
    • 没有看到所有涉及的代码,我真的说不出来。用更多代码更新你的问题,我会看看我能做什么。
    • 好的,更新了,虽然我不知道还有什么需要。据我所知,此时不应调用任何其他代码,因为我只是立即设置 url 变量。当测试运行时,浏览器 URL 显示为:http:///knowledge/Pages/default.aspx,因此它正在获取字符串连接的后半部分。感谢您的帮助!
    • 您确定它们是同一功能的一部分吗?我看到[BeforeFeature("Test")]。如果您的方法 WhenIAccessTheWebSite() 不属于同一功能,则它可能没有执行 setup 方法。下一个断点,检查BeforeFeature_Test()是否正在执行。
    • 现在我很开心,我忘了重置标签。现在完美运行...非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2018-12-31
    • 1970-01-01
    • 2019-11-29
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多