我有多个csv文件。执行批处理命令后,将填充这些csv文件。我正在使用specflow BDD。
我为我的'然后'编写代码。步。我所采用的方法是在我的功能文件中,我使用了一个示例表来说明不同类型的状态(见下文)。我在编写执行文件路径的代码时遇到问题,然后再次验证我的预期数据。
所以,我已经为我的Then步骤编写了代码。我已经说明了processFilePath,它指出了我的文件所在的路径。我想现在放一段能够捕获processFilePath和包含多个文件名的路径的代码。例如,xxx_ccx.csv.ovrr,xxx_bbx.csv.ovrr,xxx_aax.csv.ovrr。
文件处理完毕后,我想验证我的结果。
[Then("Transfer measure should be generated for (.*)")]
public void ValidateMeasurement(string path, string expected)
{
const string processFilePath = "/orabin/app/product/ff/actuals/";
var actual = Common.LinuxCommandExecutor
.RunLinuxcommand($"cat {processFilePath}{path}");
以下是我期待的文件名和预期输出。我如何进行验证,这样当我在输出下面的文件可以根据预期的输出数据进行验证。
("xxx_txrbf_xxxx.csv.ovr", "6677,6677,1001,6"),
("xxx_tsxbf_xxxx.csv.ovrr", "6677,6677,3001,6"),
("xxx_tzxbf_xxxx.csv.ovrr", "6677,6677,2001,6")]")
Assert.AreEqual(expected, actual);
}
答案 0 :(得分:0)
首先。
路径应由C#中的DirectoryInfo处理。
应该通过DirectoryInfo检索文件,以保存FileInfo类。
使处理文件和搜索文件等变得如此简单。
F.X。
string expectedPath = @"C:\Expected";
string path = @"C:\Test";
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] files = di.GetFiles();
DirectoryInfo diExpected = new DirectoryInfo(expectedPath);
FileInfo[] expectedFiles = diExpected.GetFiles();
for (int index = 0; index < files.Length; index++)
{
FileInfo currentFile = files[index];
FileInfo currentExpectedFile = expectedFiles[index];
//Expected data, should match "index" data location.
Assert.AreEqual(currentFile.FullName, currentExpectedFile.FullName);
//If you want to assert content:
string actualContent = File.ReadAllText(currentFile.FullName);
string expectedContent = File.ReadAllText(currentExpectedFile.FullName);
Assert.AreEqual(actualContent, expectedContent);
}
我不熟悉BBD和specflow内容,但我认为您可以修改我的示例以符合您的要求? 这样您预期文件的内容将与您的实际结果内容相匹配:
var actual = Common.LinuxCommandExecutor
.RunLinuxcommand($"cat {processFilePath}{path}");
命令。
您还应该断言您的预期文件数与实际文件数相同。