System.reflection.targetparametercountexception:несоответствие количества параметров - NUNIT C#
Я надеюсь, что смогу получить некоторое представление о проблеме, которую я изо всех сил пытался решить. Я новичок в c# Nunit и Visual studio.
У меня есть XML, хранящий имена пользователей и XML, хранящий пароли, а также файл .resx в Visual Studio, хранящий все имена браузеров.
Каждый пароль и имя пользователя должны быть параллельно протестированы против каждого браузера, прежде чем приступить к выбору следующего набора имени пользователя и паролей.Для этого я использовал IEnumerable, чтобы получить return TestCaseData.
публичный класс TestBase
{
public IWebDriver webDriver;
public static string Pass1 { get; private set; }
публичный статический пустота главный(строка[] аргументы)
{
XmlDocument xDoc = новый XmlDocument();
xdoc по.Нагрузка(@"C:xxxxx\UserNamePassword.xml");
Руководство узел1 = xdoc по.SelectSingleNode("//Test/DataRow");
Руководство Узел3 = xdoc по.SelectSingleNode("//Тест");
XmlNode root = xDoc.Функцию documentelement;
string[] namesArray = новая строка[node1.ChildNodes.Рассчитывать];
int i = node1.ChildNodes.Count;// подсчитайте количество потоков данных в xml - файле
ReturnValuesToTest(Узел3);
}
public static IEnumerable<testcasedata> ReturnValuesToTest(XmlNode node3)
{
foreach (узел XmlNode в node3)
{
List<string> newpassword = новый список<string>();
IEnumerator<string> newUSer = UsernameXmlDataDriven(узел).Метод getenumerator();
// var newUSer = UsernameXmlDataDriven(узел).Метод getenumerator();
пока (новый_пользователь.Метод MoveNext()) // выбираем Имя пользователя
{
ВАР новый_пользователь = новый список<строка> У();//добавление имени пользователя в ВАР новый_пользователь список
новый пользователь.Add(newUSer.Current);// добавить всех пользователей в список
строка User1 = newUSer.Current;//User1 будет иметь текущее имя пользователя
IEnumerator<string> newPass = PasswordXmlDataDriven(узел).Метод getenumerator();
//var newPass = PasswordXmlDataDriven(узел).GetEnumerator();//теперь вызовите пароль
пока (newPass.Метод MoveNext())
{
новый пользователь.Добавить(newPass.Текущий);// добавить все пароли в список
строка Pass1 = newPass.Текущий;
}
String[] browsers = May3rdXML.Автоматическая настройка.BrowsersToRunWith.Расщеплять(',');
foreach (строка b в браузерах)
{
новый пользователь.Добавить(б);// новый пользователь список пользователя,пароль,браузер
yield return new TestCaseData( User1, Pass1, b);
}
}
}
}
public static IEnumerable<string> UsernameXmlDataDriven(XmlNode node3)// узел 1-это DataRow
{
foreach (XmlNode childnode в node3.SelectSingleNode("Имя Пользователя"))
{
yield return childnode.InnerText;// возвращает только имена пользователей
}
}
public static IEnumerable<string> PasswordXmlDataDriven(XmlNode node3)// узел 1-это DataRow
{
foreach (XmlNode childnode в node3.SelectSingleNode("Пароль"))
{
yield return childnode.InnerText;// возвращает только имена пользователей
}
}
}
}
Мои тесты находятся в отдельном классе LoginTestClass.cs
а Verify_Login будет использовать возвращенные testdata для выполнения тестов входа в систему в разных браузерах .
Тест:
[Тестовая смесь]
[Распараллеливается]
открытый класс LoginTestClass : TestBase
{
[TestCaseSource(typeof(TestBase), "ReturnValuesToTest")]
общественная статический недействительным Verify_Login(строка новый_пользователь, newpass строку, строку минувшие сутки в результате)
{
if (newuser[0].ToString() == null)
{
throw new NullReferenceException("нет значения");
}
if (newpass.ToString() == null)
{
throw new NullReferenceException("нет значения");
}
TestBase parentref = new TestBase();// объявить класс родительского класса
if (browsername."Равно" ("т. е."))
{
parentref.webDriver = новый
InternetExplorerDriver(@"U:xxxx/Win32_3.11.1");
}
еще
if (browsername.Равно("Хром"))
{
parentref.webDriver = новый ChromeDriver(@"C:xxxx\chromedriver_win32");
}
Что я уже пробовал:
Я попробовал следующее:
1.выход новой TestCaseData(новый объект[] { новый_пользователь[0], новый_пользователь[1], новый_пользователь[2] })
где newuser-это список и хранит имя пользователя,пароль и имя браузера.
Richard Deeming
Таким образом, нет никакой связи между именами пользователей, паролями и браузерами; вы просто хотите получить кросс-продукт всех трех наборов?
Member 13871081
Я пытаюсь протестировать все браузеры с различными комбинациями имен пользователей и паролей, используя параметризованные NUnit testcasedata для параллельного тестирования.
Спасибо