I am having trouble getting a teardown to execute that is supposed to delete all of the accounts my automation creates on our application. I elected to use a OneTimeTearDown so it executes once and just goes through the list but it doesn't seem to be executing. Here is the code, am I putting it in the wrong place maybe? The code in the teardown works as intended on its own if I just add it to the end of the test.
namespace Ag.AutomatedRegression.UI.Tests.AccountsTests
{
[TestFixture]
public class AccountsPageTests : BaseSetup
{
[OneTimeTearDown]
public void CleanUpAccounts()
{
LogList.Add($"Entered the {MethodBase.GetCurrentMethod()}().");
for (int i = AccountsPageTests.accountIdList.Count - 1; i >= 0; i--)
{
if (AccountsPageTests.accountIdList.Count == 0)
{
LogList.Add("There were no ids in the list to delete.");
break;
}
else
{
LogList.Add("Next Step: Clean Up accounts created this session.");
PerformBrowserManagerAction.NavigateToURL(CommonSettings.Default.URL);
PerformCommonStagesAction.CleanUpAccounts(CommonSettings.Default.UserName,
CommonSettings.Default.EncryptedPassword,
AccountsPageTests.accountIdList[i]);
}
LogList.Add("Account Cleanup was successful.");
}
}
public static List accountIdList = new List();
[Test]
public void CreateAccountTest()
{
LogList.Add($"Entered the {MethodBase.GetCurrentMethod()}().");
//Code to create account with account id string variable
Assert.That(Success, Is.True, expectedMessage "\r\n"
actualMessage);
}
}
}
CodePudding user response:
The indexing on your statement
for (int i = AccountsPageTests.accountIdList.Count - 1; i > 0; i--)
doesn't do what you want. It will never process list item 0 and if there is only 1 item, nothing will show.
Step through it mentally, assuming one item
- Count - 1 is 0
- 0 is not greater than 0
- so no items are executed
Change i > 0' to i >= 0`
CodePudding user response:
As we were already discussing in the comments, please try whether formatting is an issue of your class:
using NUnit.Framework;
namespace Your.Tests
{
[TestFixture]
public class AccountsPageTests : BaseSetup
{
private List<string> accountIdList = new List<string>();
[OneTimeTearDown]
public void CleanUpAccounts()
{
LogList.Add($"Entered the {MethodBase.GetCurrentMethod()}().");
for (int i = AccountsPageTests.accountIdList.Count - 1; i >= 0; i--)
{
if (AccountsPageTests.accountIdList.Count == 0)
{
LogList.Add("There were no ids in the list to delete.");
break;
}
else
{
LogList.Add("Next Step: Clean Up accounts created this session.");
PerformBrowserManagerAction.NavigateToURL(CommonSettings.Default.StagesURL);
PerformCommonAction.CleanUpAccounts(CommonSettings.Default.StagesUserName,
CommonSettings.Default.StagesEncryptedPassword,
AccountsPageTests.accountIdList[i]);
}
LogList.Add("Account Cleanup was successful.");
}
}
[Test]
public void CreateAccountTest()
{
LogList.Add($"Entered the {MethodBase.GetCurrentMethod()}().");
//Code to Create account with accountId as a string
accountIdList.Add(accountId);
}
}
}
CodePudding user response:
Formatting was correct after mu88's answer, but that didn't fix the teardown, I ended up making it a standard Teardown instead and that seems to have resolved the issue.
