如何将从 CSV 读取的数据存储到变量中

本文关键字:存储 数据 变量 读取 CSV | 更新日期: 2023-09-27 18:32:48

我编写了一个从csv文件中读取数据的程序。

下面

复制了读取数据的代码。

但是,我想执行以下操作:

(1) 将值存储到变量中,以便可以在 Selenium 自动化脚本中使用它们。

一些注意事项:

我认为需要做的是在 While 循环中包含一种拆分方法,该方法将逗号 (",") 视为每个值之间的分隔。但是,我不确定如何正确实现这一点。此外,由于我是编程新手,如果我能得到一个关于如何做到这一点的代码示例,那将是最有益的。

我还需要跳过第一行,因为它包含一个标识数据的标头。

最后,由于 csv 的每一行都表示 (1) 测试场景的数据,因此我希望循环执行,直到读取 csv 的最后一行。

// Read data from CSV file
using (CsvFileReader reader = new CsvFileReader("C:''Data''Test_Resources''Data_Sheets''Adactin''Data_Input.csv"))
{
    CsvRow row = new CsvRow();
    while (reader.ReadRow(row))
    {
        foreach (string s in row)
        {
            Console.Write(s);
            Console.Write(" ");
        }
        Console.WriteLine();
     }
}

如何将从 CSV 读取的数据存储到变量中

如果我正确理解您的任务,这是您可以完成它的众多方法之一:1. 创建一个类来存储一次测试所需的所有数据:

    class TestInfo
    {
        static char[] delimiters = new char[] { ',' };
        static int mRequiredCount = -1;
        public string TestID { get; private set; }
        public int Variable1 { get; private set; }
        public float Variable2 { get; private set; }
        //......other variables that are required to be specified for the test
        public TestInfo(string lineFromCSVfile)
        {
            string[] segments = lineFromCSVfile.Split(delimiters);
            if(mRequiredCount < 0)
                mRequiredCount = this.GetType().GetProperties().Length;
            if (segments.Length < mRequiredCount)
                throw new Exception(string.Format("Cannot extract required test data from CSV line {0}", lineFromCSVfile));
            else
            {// NB! exception InvalidStringFormat can happen below during parsing
                TestID = segments[0].Trim();
                Variable1 = int.Parse(segments[1].Trim());
                Variable2 = float.Parse(segments[2].Trim());
                //........... parse other variables here ............
            }
        }
    }
  1. using块之前:

        int linesCount = 0;
        List<TestInfo> myTests = new List<TestInfo>();
    
  2. using块的循环内:

            if (linesCount > 0)
            {
                linesCount++;
                try
                {
                    myTests.Add(new TestInfo(row));
                }
                catch (Exception ex)
                {
                    // Create a log record or/and do something else to report the corrupted CSV line
                }
            }
            linesCount++;
    

因此,在解析所有 CSV 行后,您将拥有一个包含自动测试数据的对象列表。