我正在使用Selenium,Specflow和C#创建测试方案。我有一个列表,并将其添加到scenarioContext字典中。现在,我想以其他步骤定义来检索它。我怎么做? 示例:
List<string> myList = new List<string>();
mylist.Add(Thomas);
mylist.Add(Bob);
mylist.Add(Andy);
this.scenariocontext.Add("myList", myList);
//创建了一个新列表,以在不同步骤的情况下检索数据
List<string> NewList = new List<string>();
NewList = this.ScenarioContext.Get<string>("myList");
当我尝试从字典中检索值时,出现此错误 “无法将类型为'System.Collections.Generic.List`1 [System.String]'的对象转换为类型为'System.String'。”
答案 0 :(得分:0)
我假设scenarioContext
被声明为Dictionary<string, List<string>>
,您可以通过键检索值(在这种情况下为列表)。这是您的代码的样子:
选项1
Dictionary<string, List<string>> scenarioContext = new Dictionary<string, List<string>>();
List<string> myList = new List<string>();
myList.Add("Thomas");
myList.Add("Bob");
myList.Add("Andy");
scenarioContext.Add("myList", myList);
List<string> newList = new List<string>();
newList = scenarioContext["myList"];
更新:我刚刚发现SpecFlow中的ScenarioContext有一个附加的Getter。您将在最后一行代码中将列表转换为字符串,它应如下所示:
NewList = this.ScenarioContext.Get<List<string>>("myList");
答案 1 :(得分:0)
您可以使用键阅读字典。在您的情况下,它必须类似于: newList = this.ScenarioContext [“ myList”];