将字符串列表添加到字典中,然后检索其值

时间:2020-05-07 09:52:01

标签: c# selenium specflow

我正在使用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'。”

2 个答案:

答案 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”];