用数据文件替换记录的值 - 数据驱动的测试

时间:2015-06-22 11:02:39

标签: visual-studio-2013 coded-ui-tests data-driven-tests data-driven

我已经从visual Studio 2013录制了一个简单的编码UI测试。它的作用是什么;

  • 推出网站
  • 填写(8个字段)
  • 的表格
  • 保存表单并关闭它

现在,我希望使用data.csv文件来替换这8个值。我做的所有搜索,我只能找到每个输入字段有不同方法的选项,因此很容易找到并替换值。在我的例子中,1个方法和8个字段。

我该怎么做?由于我的主文件如下所示,我在哪里进行更改:

enter image description here

我应该使用CSV文件而不是我记录的手动值进行更改和更改。

我的设计器文件代码如下几个输入字段:

// Type '123456789' in 'i' text box
uIIEdit.Text = this.createKundeParams.UIIEditText; 

// Type '{Tab}' in 'i' text box
Keyboard.SendKeys(uIIEdit, this.createKundeParams.UIIEditSendKeys, ModifierKeys.None);

// Type 'Jeff Hardy' in 'name_i' text box
uIName_iEdit.Text = this.createKundeParams.UIName_iEditText;

// Type '{Tab}' in 'name_i' text box
Keyboard.SendKeys(uIName_iEdit, this.createKundeParams.UIName_iEditSendKeys, ModifierKeys.None);

2 个答案:

答案 0 :(得分:1)

您可以将所有8个值放在1个csv行中,并将它们作为一个输入处理,以传递给设置字段的方法,或者您也可以将方法更改为接受一个值和字段名称,并使用值

答案 1 :(得分:0)

创建CSV文件。 将CSV文件添加到项目中。 确保已部署CSV文件。 将CSV文件添加为单个测试的数据源。 阅读CSV字段并在测试中使用它们。 下面详细说明了步骤,但有一些变化。

Visual Studio 2010有一个“数据源向导”,可以执行其中的一些步骤。 Visual Studio 2012和2013版本没有该向导,因此所有步骤都必须手动完成。

创建CSV文件

一种方法是在电子表格中创建文件,然后将其另存为逗号分隔值。另一种方法是使用文本编辑器并只写文件。我使用电子表格程序处理大数据源文件,并使用文本编辑器创建小文件。一些编辑器在文件的开头添加字节顺序标记(BOM),该顺序将添加到CSV的第一个字段名称中,该名称似乎使该字段不可读。有关BOM的更多信息,请参见此页面。

将CSV文件添加到项目中

使用解决方案资源管理器中的上下文菜单,选择添加->现有项。然后浏览到所需的文件。请注意,文件过滤器可能需要更改为或* .csv。

确保已部署CSV文件

从解决方案资源管理器中打开CSV文件的属性面板。将“复制到输出目录”设置为“如果更新则复制”或“始终复制”。有些文档建议使用“如果更新则复制”,但我更喜欢“始终复制”,因为有时文件没有按预期复制。两种复制方法之间的区别是磁盘空间和时间很少,但是磁盘通常很大,并且复制时间通常很小。我认为,确保文件正确复制后,节省下来的钱远远超过了。

将CSV文件添加为单个测试的数据源

用正确的数据源行替换[TestMethod]属性。此Microsoft博客显示了几种可能的数据源文件类型的替换代码。对于CSV使用:

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
    "|DataDirectory|\\data.csv", "data#csv",
    DataAccessMethod.Sequential), DeploymentItem("data.csv"),
    TestMethod]

请注意,文件名出现了3次,一个副本使用#而不是.。我尚未找到有关Datasource(...)属性不同字段的任何有用的文档,因此无法进一步建议如何选择非CSV数据源的值。

| DataDirectory |测试运行时,上面的部分将替换为部署文件的目录。如果需要,可以将字符串引号中的整个文件名替换为文件的完整路径名。

阅读CSV字段并在测试中使用它们

“编码的UI记录和生成”工具创建的类的字段包含输入文本框或断言中使用的值。每个操作方法都有一个... Params类,每个断言方法都有一个... ExpectedValues类,其中...是方法名称。这些字段的默认值是记录测试时使用的值。可以在调用动作或断言方法之前通过分配覆盖记录的值。数据源当前行的字段可从TestContext.DataRow [...]访问。

假设一个编码UI测试具有一个EnterValue方法,该方法将文本写入屏幕的两个字段中,并且还具有一个断言一个字段的CheckResult方法。然后可以将测试方法编写如下。

[DataSource...
    TestMethod]
public void CodedUITestMethod1()
{
    this.UIMap.EnterValueParams.UIItem0TextSendKeys = TestContext.DataRow["ValueOne"].ToString();
    this.UIMap.EnterValueParams.UIItem1TextSendKeys = TestContext.DataRow["ValueTwo"].ToString();
    this.UIMap.EnterValue();

    this.UIMap.CheckResultExpectedValues.UIItem0TextDisplayText = TestContext.DataRow["Result"].ToString();
    this.UIMap.CheckResult();
}

... Params和... ExpectedValues类允许测试在测试运行时创建值。例如,如果EnterValue方法也想将明天的日期写到一个字段中,我们可以在调用它之前添加以下行: