简体   繁体   中英

Nunit c# csv testsource

I am trying pass an argument to a NUnit test after reading a CSV file ie

[Test, TestCaseSource(typeof(RegistrationData), "GetTestData")]
public void RegisterUserTest(RegistrationData registrationData)
    {

        RegisterNewUser registration = new RegisterNewUser(this.driver);
        this.driver.Navigate().GoToUrl(baseURL + "/mercuryregister.php");

        registration.registerNewUser(registrationData);
    }

but I get the error:

System.InvalidCastException : Unable to cast object of type 'RegisterUser.RegistrationData' to type 'System.Collections.IEnumerable'.RegisterUser.UserRegistrationTest.RegisterUserTest

 private RegistrationData GetTestData()
    {
        DataTable dt = DataTable.New.ReadCsv(@"C:\datafolder\regdata.csv");
        RegistrationData registrationData = new RegistrationData();

        foreach (Row row in dt.Rows)
        {

            registrationData.setfirstName(row["FirstName"]);
            registrationData.setfirstName(row["LastName"]);
            registrationData.setPhone(row["Phone"]);
            registrationData.setUserName(row["UserName"]);
            registrationData.setAddress1(row["Add1"]);
            registrationData.setAddress2(row["Add2"]);
            registrationData.setCity(row["City"]);
            registrationData.setState(row["State"]);
            registrationData.setPostalcode(row["Postalcode"]);
            registrationData.setCountry(row["Country"]);
            registrationData.setEmail(row["Email"]);
            registrationData.setPassword(row["Password"]);
            registrationData.setConfimPassword(row["Cpassword"]);

        }
        // return new RegistrationData[][] { { registrationData } };
        return registrationData; 
    }

Example of the ModelTestCaseSource:

public class ModelTestCaseSource
{
    public IEnumerable<TestCaseData> GetTestCases()
    {
        DataTable dt = DataTable.New.ReadCsv(@"C:\datafolder\regdata.csv");

        foreach (Row row in dt.Rows)
        {
            var registrationData = new RegistrationData();

            registrationData.setfirstName(row["FirstName"]);
            registrationData.setfirstName(row["LastName"]);
            registrationData.setPhone(row["Phone"]);
            registrationData.setUserName(row["UserName"]);
            registrationData.setAddress1(row["Add1"]);
            registrationData.setAddress2(row["Add2"]);
            registrationData.setCity(row["City"]);
            registrationData.setState(row["State"]);
            registrationData.setPostalcode(row["Postalcode"]);
            registrationData.setCountry(row["Country"]);
            registrationData.setEmail(row["Email"]);
            registrationData.setPassword(row["Password"]);
            registrationData.setConfimPassword(row["Cpassword"]);

            yield return new TestCaseData(new object[] { registrationData });
        }
    }
}

Usage:

[Test, TestCaseSource(typeof(ModelTestCaseSource), "GetTestCases")]
public void RegisterUserTest(RegistrationData registrationData)
{

    RegisterNewUser registration = new RegisterNewUser(this.driver);
    this.driver.Navigate().GoToUrl(baseURL + "/mercuryregister.php");

    registration.registerNewUser(registrationData);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM