为什么Trace.WriteLine会打印随机字符而不是指定的字符?

时间:2018-01-26 10:42:13

标签: c# .net coded-ui-tests

我目前正在使用Coded UI编写自动化测试脚本。我在我的脚本中的各个点使用了Trace.Writeline来帮助找出测试可能失败的地方。一个这样的片段如下:

Trace.WriteLine(DateTime.Now.ToString("Enter press"));
Keyboard.SendKeys("{TAB}");
Trace.WriteLine(DateTime.Now.ToString("Tab press x 20"));
Keyboard.SendKeys("{TAB 4}");
Keyboard.SendKeys("{TAB 4}");
Keyboard.SendKeys("{TAB 4}");
Keyboard.SendKeys("{TAB 4}");
Keyboard.SendKeys("{TAB 4}");
Trace.WriteLine(DateTime.Now.ToString("Asserting Period cell state."));

然而,当测试运行时,我得到以下输出:

2018/01/26 - 15:29:45 | Step 1 
2018/01/26 - 15:30:17 | Step 2 
2018/01/26 - 15:30:54 | Step 3 
2018/01/26 - 15:31:08 | Step 4
2018/01/26 - 15:36:57 | Step 5 
2018/01/26 - 15:42:46 | Step 6
2018/01/26 - 15:42:55 | Step 7 
2018/01/26 - 15:43:04 | Step 10
2018/01/26 - 15:44:46 | Step 11 
EnPer pre46 
Tab pre47 x 20
A47erPinA.D. Perio26 cell 47PaPe.

有人可以帮我理解为什么会这样吗?

2 个答案:

答案 0 :(得分:6)

DateTime.ToString(format)是一种从DateTime创建字符串的方法。您传递的部分字符串将替换为时间值。例如:ss中的"Asserting..."替换为秒。

更改这些行:

Trace.WriteLine(DateTime.Now.ToString("Tab press x 20"));

你可能意味着像

Trace.WriteLine($"{DateTime.Now}: Tab press x 20");

答案 1 :(得分:2)

请改为尝试:

Trace.WriteLine(DateTime.Now.ToString() + "Enter press");