【问题标题】:Selenium: Variables not accessible from other testcasesSelenium:其他测试用例无法访问的变量
【发布时间】:2019-06-10 21:49:28
【问题描述】:

我在带有 NUnit 的 Visual Studio 中使用 Selenium 对我的测试用例进行排序。

我无法访问两个字符串变量,因为它们属于两个不同的测试用例。

我的代码的简化版本

namespace AutomatedTestCases
{
    [TestFixture]
    public class TestClass : BaseTest
    {
       private String A;
       private String B;
       [Test]
       public void TestCase1()
       {
          String A = "ABC123";
          Console.WriteLine(A);
       }

       [Test]
       public void TestCase2()
       {
          String B = "ABC123";
          Console.WriteLine(B);
       }
       [Test]       
       public void TestCase3()
       {
          Console.WriteLine(A);
          Console.WriteLine(B);
       }
       [Test]
       public void OrderOfTestCases()
       {
       TestCase1();
       TestCase2();
       TestCase3();
       }
   }
}

当我从测试用例中打印文本时,会打印 ABC123。 但是当我按顺序运行它们时 (OrderOfTestCases()) 它什么也不打印或为空。

所以看起来值“ABC123”没有存储在测试用例之间的变量中。

【问题讨论】:

    标签: c# visual-studio selenium global-variables


    【解决方案1】:

    AB 变量只能在声明它们的方法中访问。如果您想在最初声明它们的方法之外访问 AB,则必须在类范围内移动声明。

        [TestFixture]
        public class TestClass : BaseTest
        {
            private string A = "ABC123";
            private string B = "ABC123";
        }
    

    这意味着您可以在来自TestClass 类的任何测试方法中访问AB 变量。

    如果您只想定义变量并在测试中为其赋值,您应该简单地使用:

    private string A;
    private string B;
    

    在您的[Test] 方法中:

    [Test]
    public void TestCase1()
    {
       A = "ABC123";
    }
    

    【讨论】:

    • 是否可以在那里声明它们而不给它们一个值?像这样private string A; 因为具体值不是静态的,所以我不能像这样预先给它们一个值。我需要运行该类的内部测试用例,以从我正在测试的网页的某些元素中检索数据。
    • 错误消息消失了,但该值似乎没有永久存储。请阅读更新后的问题。
    • AB 之前删除String,然后重试。只让A = "ABC123";
    猜你喜欢
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多