我有一个问题,我的[AssemblyCleanup]方法没有被调用。
我目前正在构建一个自动化框架,并希望在我的测试之前和之后完成一些 API 调用。我已经找到了程序集初始化/清理方法,它们非常适合我需要做的事情。但是我无法[AssemblyCleanup]运行该方法。
我有一个我的测试固有的基类,这就是我想要[AssemblyCleanup]放置方法的地方。
我的课。
[TestClass]
public class TestBaseChrome: WebDriver
{
public TestContext TestContext { get; set; }
[TestInitialize]
public void Initialize()
{
//Do Stuff Here for tests
}
[TestCleanup]
public void Cleanup()
{
//used for end of test reporting
}
[AssemblyCleanup]
public static void EndOfSuiteActions()
{
//Stuff here when whole test suite finished
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在这里和这里看到了示例,并表明[AssemblyCleanup]需要在具有该[TestClass]属性的类中。如果我将它[AssemblyCleanup]放在一个带有实际测试的类中,它会按预期工作。但我希望所有的前测试/后测试都放在一个地方。
任何意见,将不胜感激。
我目前正在使用 NUnit 构建我的自动化框架,一切都运行良好,我想要做的最后一个改进是能够将我的自动化测试脚本映射到我的测试软件中的测试用例。
我对所有测试用例都使用 TestRail。
我的理想情况是能够用测试轨中相应的测试用例 ID 来装饰每个测试用例,并且当需要在 TestRail 中报告测试结果时,我可以只使用 Case id 。目前我正在通过匹配测试名称/脚本名称来执行此操作。
例子 -
[Test]
[TestCaseId("001")]
public void NavigateToSite()
{
LoginPage login = new LoginPage(Driver);
login.NavigateToLogInPage();
login.AssertLoginPageLoaded();
}
Run Code Online (Sandbox Code Playgroud)
然后在我的拆卸方法中,它会是这样的 -
[TearDown]
public static void TestTearDown(IWebDriver Driver)
{
var testcaseId = TestContext.CurrentContext.TestCaseid;
var result = TestContext.CurrentContext.Result.Outcome;
//Static method to report to Testrail using API
Report.ReportTestResult(testcaseId, result);
}
Run Code Online (Sandbox Code Playgroud)
我刚刚编写了 testcaseid 属性,但这就是我正在寻找的。
[测试用例ID(“001”)]
如果它已经存在,我可能会错过它,或者我该如何扩展 NUnit 来做到这一点?