我编写了一个从csv文件中读取数据的程序。
读入数据的代码将在下面复制。
但是,我想做以下事情:
(1)将值存储到变量中,以便可以在Selenium Automation脚本中使用它们。
一些注意事项:
我认为需要做的是在While循环中包含一个Split方法,它将逗号(",")视为每个值之间的分隔。但是,我不确定如何正确实现这一点。此外,由于我是编程新手,如果我能得到一个关于如何做到这一点的代码示例,那将是最有益的。
我还需要跳过第一行,因为它包含标识数据的标题。
最后,因为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();
}
}
答案 0 :(得分:2)
如果我理解你的任务正确,这是你可以完成它的众多方法之一: 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 ............
}
}
}
在using
阻止之前:
int linesCount = 0;
List<TestInfo> myTests = new List<TestInfo>();
在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行之后,您将获得一个包含自动测试数据的对象列表。