【问题标题】:Need help when dealing with Excel Complex Data in MSTest在 MSTest 中处理 Excel 复杂数据时需要帮助
【发布时间】:2020-08-25 21:39:29
【问题描述】:

目前,我正在从与“Key”值匹配的特定工作表中获取数据 - 但现在我想访问与“Key”值匹配的所有工作表中的数据

在我的 excel 中 - 我有两张工作表:LogInUserData 和 Sheet2

现在在 LogInUserData 密钥电子邮件密码记住我 登录成功 a@a.a 0

在 Sheet2 中
基克拉纳 登录成功演示

现在,我想从两张表中访问“成功登录”键的值 - 我有代码,但它只从第一张表中获取它,而不是从其他表中获取 - 那么我如何从 excel 访问复杂的数据表

我正在使用 ODBC 连接

    public static string TestDataFileConnection(string fileName)
    {

        string Filename = "C:\\Users\\PalakS\\source\\repos\\Daily update\\UnitTestProject2 - 10-04\\UnitTestProject2\\ExcelData\\LogInPageData.xlsx";
        string connectionString = string.Format("Dsn=Excel Files;READONLY=false;DBQ={0};", Filename);
        System.Data.Odbc.OdbcCommand odbcCmd = new System.Data.Odbc.OdbcCommand("", new System.Data.Odbc.OdbcConnection(connectionString));
        return connectionString;
    }

    public static T GetTestData<T>(string fileName, string sheet, string keyName)
    {
        using (var connection = new
                      OdbcConnection(TestDataFileConnection(fileName)))
        {
            connection.Open();

            var query = string.Format("select * from [{0}$]where key = '{1}'", sheet, keyName);
            var value = connection.Query<T>(query).FirstOrDefault();
            connection.Close();
            return value;
        }
    }

函数调用:

    LogInUserModel user = AccessExcelData.GetTestData<LogInUserModel>("LogInPageData.xlsx", "LogInUserData", "LogInSuccessfully");
        string email = user.Email.ToString();

任何人都可以帮忙 - 我如何使用 Excel 管理 MSTest 中的复杂数据

【问题讨论】:

  • 会有多个结果(用户)吗?
  • 暂时不行——键值对我来说就像一个主键

标签: c# excel automation odbc mstest


【解决方案1】:

也许不是您正在寻找的解决方案,而是您的代码所需更改最少的解决方案...

由于所有工作表(主键)中只有一个结果,因此检查第一个查询是否为空,如果是,则在 sheet2 上再次运行。

例子:

LogInUserModel user = AccessExcelData.GetTestData<LogInUserModel>("LogInPageData.xlsx", "LogInUserData", "LogInSuccessfully");

if (user is null)
{
    user = AccessExcelData.GetTestData<LogInUserModel>("LogInPageData.xlsx", "Sheet2", "LogInSuccessfully");
}
string email = user.Email.ToString();

【讨论】:

  • 是的,这个解决方案可能没有帮助:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多