3

我从 Visual Studio 2013 录制了一个简单的 Coded UI 测试。它的作用是;

  • 启动网站
  • 填写包含(8 个字段)的表格
  • 保存表单并关闭它

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

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

在此处输入图像描述

为了使用 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);
4

2 回答 2

1

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

于 2015-06-22T13:29:13.293 回答
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 数据源。

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

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

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

假设一个 Coded 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 方法还想将明天的日期写入字段,我们可以在调用它之前添加以下行:

于 2020-11-22T03:36:39.613 回答