如何编写SpecFlow步骤来检查仅在测试执行时知道的值?

时间:2016-03-24 12:43:47

标签: automated-tests specflow

我需要检查网页上表格中的值。在大多数情况下,这些是预先知道的值。但有时价值是,例如,当前日期。是否有可能写出类似" =今天()"在"然后"步骤,而不是只为这种情况创建一个新步骤? 所以我可以通过SpecFlow做这样的事情: Then I verify values in MyTable | ColumnA | ColumnB |ColumnC | | Electricity | 100 | =today() | | Electricity | 200 | =today() |

2 个答案:

答案 0 :(得分:0)

如果值必须来自表格,那么您只需检查已知值并从中创建日期。沿着这些未经测试的路线:

[Then("I verify values in MyTable")]
public void ThenIVerifyValuesInMyTable(Table table)
{
    foreach(var row in table.Rows)
    {
        DateTime comparisonDate;
        if (row[2].Value =='Today')
        {
             comparisonDate=DateTime.Today;
        }
        else
        { 
            comparisonDate = DateTime.Parse(row[2]);
        }
        comparisonDate.Should().Be(myTable.ExpectedDate);
    }
}

答案 1 :(得分:0)

希望这是一个答案 Default Values Specflow Step Definitions SpecFlow支持创建“步骤参数转换”。使用它们,您可以创建可以从不同模式解析日期时间的方法:

[StepArgumentTransformation("todays date")]
  public DateTime TransformToday()
  {
    return DateTime.Today;
  }

之后,您只需在步骤中使用DateTime参数,其余部分由SpecFlow完成......

[Given(@"myfield equals (.*)")`enter code here`]
   public void MyfieldEqualsTodaysDate(DateTime date)
   {
      //do stuff
   }