Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跳过代码行-与CSV相关_C#_Csv_Coded Ui Tests - Fatal编程技术网

C# 跳过代码行-与CSV相关

C# 跳过代码行-与CSV相关,c#,csv,coded-ui-tests,C#,Csv,Coded Ui Tests,这是一个更一般的问题,但在我的情况下,它可能更具体(我当然希望) 我正在做一个编码的UI测试,用csv数据替换输入控件/元素中的值 问题在于,根据csv文件中的某些列,页面可能具有不同的控件 例如: this.UIMap.ICParams.UITboxQuantityEditText = TestContext.DataRow["qtd_c_1"].ToString(); this.UIMap.ICParams.UITboxQuantityEdit1Text = TestContext.Da

这是一个更一般的问题,但在我的情况下,它可能更具体(我当然希望)

我正在做一个编码的UI测试,用csv数据替换输入控件/元素中的值

问题在于,根据csv文件中的某些列,页面可能具有不同的控件

例如:

 this.UIMap.ICParams.UITboxQuantityEditText = TestContext.DataRow["qtd_c_1"].ToString();
 this.UIMap.ICParams.UITboxQuantityEdit1Text = TestContext.DataRow["qtd_c_2"].ToString();
这将用csv中的2列替换记录在2个字段中的值,但是有可能我只有第一个控件(这将使代码行
This.UIMap.ICParams.UITboxQuantityEdit1Text=TestContext.DataRow[“qtd_c_2”].ToString()
以及csv列
qtd_c_2
无效,因为控件不存在,因此会导致测试崩溃)

我尝试过在csv文件中这样设置值(间隔开,这样看起来更干净):

[col1][qtd_c_1][qtd_c_2][col4][col5]

这可能不是答案,我只是想理解你在说什么

[col1][col2][col3][col4][col5]
[a   ][5   ][    ][    ][  b ]
[    ][    ][    ][    ][    ]


UITboxQuantityEditText = TestContext.DataRow["col1"].ToString();
UITboxQuantityEdit1Text = TestContext.DataRow["col3"].ToString();
鉴于上述情况。。。你为什么不检查它是否为空,或者设置为空,或者忽略它,根据它是否为空

var valueCol1 = TestContext.DataRow["col1"];
if (valueCol1 == DBNull.Value)
        // do something
    else
        // do something else

显然,可以通过创建函数和扩展来重构和改进这一点,我只是想了解需求。

我已经阅读了你的问题3次以上。我仍然不明白你说的“但我可能只有第一个控件(这会使第二个代码行以及第二个csv列变得无用,因为该控件不存在)”是什么意思,第二个控件/列去了哪里?“跳过代码行?”我想你是指条件语句?就像
if
语句一样,正如您所看到的,qtd_c_2的内容是
,但这是您的分隔符。因此,您需要转义它或使用另一个分隔符,如
@JeroenvanLangen你看,测试正在通过几个页面,这些页面的布局受csv文件中某些值的影响,在这种情况下,第二个控件不存在(这使得第二行崩溃测试,因为它需要该控件),我能将其留空吗?不是像
,而是像
null
一样,我认为您应该为每页创建一个测试。你不应该做“一个测试来控制所有的测试”。我会根据你的格式更新我的问题以使它更清晰。@Onilol是的,谢谢!,我本来打算为你做这件事,但可能会丢失一些适用的细节,而这些细节不是gd。@Onilol,你为什么不能检查它是否为空,你确定引号“有没有跳过代码行或忽略csv列的方法?”的措词正确吗?我可以检查它是否为空,但是我没有循环代码,所以如果第二个控件不存在,我需要避开下一行,但后面有更多行。是的,每个页面可能有它的所有控件,也可能没有,但是csv覆盖了所有控件。
var valueCol1 = TestContext.DataRow["col1"];
if (valueCol1 == DBNull.Value)
        // do something
    else
        // do something else