我构建了一个编码的UI测试,我想让它成为一个数据驱动的测试, 我想从与项目文件位于同一目录的excel文件(Data.xls)中获取数据,我使用MSDN站点中显示的这一行,但它没有用,我应该对该行做什么改变?
[DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=|DataDirectory|\\Data.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet1$", DataAccessMethod.Sequential), TestMethod]
谢谢
答案 0 :(得分:0)
这是我用来将DataSource连接到测试的代码行:
[DataSource("System.Data.Odbc", "Dsn=Excel Files;dbq=|DataDirectory|\\Logins.xlsx;defaultdir=C:\\Data\\Logins.csv;driverid=1046;maxbuffersize=2048;pagetimeout=5", "Sheet1$", DataAccessMethod.Sequential), DeploymentItem("Logins.xlsx"), TestMethod]
然后在我使用的代码中:
LoginParams.TextBoxInfo = TestContext.DataRow["ColumnHeader"].ToString();
但是,我确实将excel电子表格设置为部署项目。我不确定你是否已经这样做了。
答案 1 :(得分:0)
作为解决方法创建新类,并添加此数据源。您可以使用相同的UIMap和相同的代码,只需添加一个新的Coded UI Test。 “项目” - >“新的CodedUI测试”。
我使用了相同的excel工作簿,但我的测试使用了不同的工作表,如下所示:
namespace Data_driven_testing
{
/// <summary>
/// Summary description for CodedUITest2
/// </summary>
[CodedUITest]
public class CodedUITest2
{
public CodedUITest2()
{
}
[DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=D:\\CodedUI\\Data_driven_testing\\Data_driven_testing\\Data.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet2$", DataAccessMethod.Sequential), TestMethod]
public void CodedUITestMethod1()
{
this.UIMap.RecordedMethod3Params.UITextBox1EditText = TestContext.DataRow["Input1"].ToString();
this.UIMap.RecordedMethod3Params.UITextBox2EditText = TestContext.DataRow["Input2"].ToString();
this.UIMap.RecordedMethod3();
// To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
// For more information on generated code, see http://go.microsoft.com/fwlink/?LinkId=179463
}
namespace Data_driven_testing
{
/// <summary>
/// Summary description for CodedUITest1
/// </summary>
[CodedUITest]
public class CodedUITest1
{
public CodedUITest1()
{
}
//[TestMethod]
[DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=D:\\CodedUI\\Data_driven_testing\\Data_driven_testing\\Data.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet1$", DataAccessMethod.Sequential), TestMethod]
public void CodedUITestMethod1()
{
this.UIMap.RecordedMethod1Params.UITextBox3Text = TestContext.DataRow["Input1"].ToString();
this.UIMap.RecordedMethod1Params.UITextBox4EditText = TestContext.DataRow["Input1"].ToString();
this.UIMap.RecordedMethod1();
this.UIMap.RecordedMethod2Params.UITextBox5EditText = TestContext.DataRow["Input3"].ToString();
this.UIMap.RecordedMethod2Params.UITextBox6EditText = TestContext.DataRow["Input4"].ToString();
// this.UIMap.RecordedMethod2();
}
答案 2 :(得分:0)
如果您能为我们提供堆栈跟踪,可能我们可以为您提供准确的解决方案。
但是,我认为,看到您的评论,如果您收到连接错误,很可能是因为您没有为OLEDB提供商安装2007 Office System驱动程序。
您可以从以下Microsoft链接下载它:http://www.microsoft.com/en-us/download/details.aspx?id=23734