我已经从visual Studio 2013录制了一个简单的编码UI测试。它的作用是什么;
现在,我希望使用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);
答案 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方法也想将明天的日期写到一个字段中,我们可以在调用它之前添加以下行: