如何在另一个 class 中初始化 TestContext 属性?
How can I initialize TestContext property in another class?
我是 Selenium 的新手,我正在尝试通过 CSV 文件执行数据驱动的测试。为此,我在包含测试属性的 class 中定义了 DataSource 属性。我正在使用 MStest 框架。
[TestClass]
public class UnitTest1:BaseDriver
{
ExcelTest sd;
private TestContext instance;
public TestContext TestContext
{
set { instance = value; }
get { return instance; }
}
public UnitTest1()
{
sd = new ExcelTest(_driver);
}
[TestInitialize]
public void Testinitialize()
{
}
[TestMethod]
[DeploymentItem("TestData.csv")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", @"C:\Users\nidumukv\Documents\Visual Studio 2012\Projects\BMICalculator\BMICalculator\DataFiles\TestData.csv", "TestData#csv", DataAccessMethod.Sequential)]
public void DDtest_usingCSV()
{
string feet = TestContext.DataRow["feet"].ToString();
string inches = TestContext.DataRow["inches"].ToString();
string weight = TestContext.DataRow["weight in pounds"].ToString();
string BMI = TestContext.DataRow["BMI"].ToString();
sd.TestUsingCSV(feet,inches,weight,BMI);
}
[TestCleanup]
public void cleanup()
{ _driver.Quit(); }
}
BaseDriver 是一个 class 我用来存储实际的网络驱动程序。 PageElements 是一个class,我在其中声明了所有的网络元素。
我试图在单独的 class 中定义 'DDtest_usingCSV' 方法中的变量,这样测试就不会变得笨拙。但是每当我在另一个 class 中定义另一个测试上下文时,我都会收到 NullReferenceException。我试过在 class 之间传递 属性。但我做不到(我还在学习)。
下面是 class 我正在尝试初始化 TestContext
public class ExcelTest:PageElements
{
public IWebDriver _driver;
public ExcelTest(IWebDriver driver):base(driver)
{
_driver = driver;
}
public void TestUsingCSV(string _feet,string _inches,string _weight,string _BMI)
{
feet.SendKeys(_feet);
inches.SendKeys(_inches);
weight.SendKeys(_weight);
compute_btn.Click();
}
}
因为我无法初始化 属性,我在测试 class 文件中对该方法进行参数化。
并且在如下所述声明 TestContext 属性 时,为什么我们使用 "TestContext" 作为 属性 名称而不是实例?
private TestContext instance;
public TestContext TestContext
{
set { instance = value; }
get { return instance; }
}
在从 excel 读取值时,我们使用 "TestContext" 而不是 "instance" 来访问 DataRow。每当我看到这个问题时,都会困扰我。
public void DDtest_usingCSV()
{
string feet = TestContext.DataRow["feet"].ToString();
string inches = TestContext.DataRow["inches"].ToString();
string weight = TestContext.DataRow["weight in pounds"].ToString();
string BMI = TestContext.DataRow["BMI"].ToString();
sd.TestUsingCSV(feet,inches,weight,BMI);
}
请不要介意问题的长度。我对我的问题进行了详细的解释。任何帮助都将不胜感激。提前致谢。
TestContext 由 MSTEST 框架自动设置,但仅在具有 [TestClass] 属性的 class 中以及当它从该 class.
执行测试时
在您的情况下,只需将 TestContext 作为参数传递到 ExcelTest 的 TestUsingCSV 方法中 class。
我是 Selenium 的新手,我正在尝试通过 CSV 文件执行数据驱动的测试。为此,我在包含测试属性的 class 中定义了 DataSource 属性。我正在使用 MStest 框架。
[TestClass]
public class UnitTest1:BaseDriver
{
ExcelTest sd;
private TestContext instance;
public TestContext TestContext
{
set { instance = value; }
get { return instance; }
}
public UnitTest1()
{
sd = new ExcelTest(_driver);
}
[TestInitialize]
public void Testinitialize()
{
}
[TestMethod]
[DeploymentItem("TestData.csv")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", @"C:\Users\nidumukv\Documents\Visual Studio 2012\Projects\BMICalculator\BMICalculator\DataFiles\TestData.csv", "TestData#csv", DataAccessMethod.Sequential)]
public void DDtest_usingCSV()
{
string feet = TestContext.DataRow["feet"].ToString();
string inches = TestContext.DataRow["inches"].ToString();
string weight = TestContext.DataRow["weight in pounds"].ToString();
string BMI = TestContext.DataRow["BMI"].ToString();
sd.TestUsingCSV(feet,inches,weight,BMI);
}
[TestCleanup]
public void cleanup()
{ _driver.Quit(); }
}
BaseDriver 是一个 class 我用来存储实际的网络驱动程序。 PageElements 是一个class,我在其中声明了所有的网络元素。
我试图在单独的 class 中定义 'DDtest_usingCSV' 方法中的变量,这样测试就不会变得笨拙。但是每当我在另一个 class 中定义另一个测试上下文时,我都会收到 NullReferenceException。我试过在 class 之间传递 属性。但我做不到(我还在学习)。
下面是 class 我正在尝试初始化 TestContext
public class ExcelTest:PageElements
{
public IWebDriver _driver;
public ExcelTest(IWebDriver driver):base(driver)
{
_driver = driver;
}
public void TestUsingCSV(string _feet,string _inches,string _weight,string _BMI)
{
feet.SendKeys(_feet);
inches.SendKeys(_inches);
weight.SendKeys(_weight);
compute_btn.Click();
}
}
因为我无法初始化 属性,我在测试 class 文件中对该方法进行参数化。
并且在如下所述声明 TestContext 属性 时,为什么我们使用 "TestContext" 作为 属性 名称而不是实例?
private TestContext instance;
public TestContext TestContext
{
set { instance = value; }
get { return instance; }
}
在从 excel 读取值时,我们使用 "TestContext" 而不是 "instance" 来访问 DataRow。每当我看到这个问题时,都会困扰我。
public void DDtest_usingCSV()
{
string feet = TestContext.DataRow["feet"].ToString();
string inches = TestContext.DataRow["inches"].ToString();
string weight = TestContext.DataRow["weight in pounds"].ToString();
string BMI = TestContext.DataRow["BMI"].ToString();
sd.TestUsingCSV(feet,inches,weight,BMI);
}
请不要介意问题的长度。我对我的问题进行了详细的解释。任何帮助都将不胜感激。提前致谢。
TestContext 由 MSTEST 框架自动设置,但仅在具有 [TestClass] 属性的 class 中以及当它从该 class.
执行测试时在您的情况下,只需将 TestContext 作为参数传递到 ExcelTest 的 TestUsingCSV 方法中 class。