Я не могу выполнить BasicReport класс C#
Я работаю над автоматизацией тестирования ERP-динамики Axe 7 с селеном. Таким образом, я записываю сценарии с помощью регистратора задач на динамическом топоре 365, и для генерации отчета я использовал протяженность отчетов 2.41.0, для этого я создал класс BasicReport:
using NUnit.Framework;
using RelevantCodes.ExtentReports;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GettingStartedWithLoadTesting
{
[TestFixture]
public class BasicReport
{
public ExtentReports extent;
public ExtentTest test;
[OneTimeSetUp]
public void StartReport()
{
string pth =
System.Reflection.Assembly.GetCallingAssembly().CodeBase;
string actualPath = pth.Substring(0, pth.LastIndexOf("bin"));
string projectPath = new Uri(actualPath).LocalPath;
string reportPath = projectPath + "Reports\\MyOwnReport.html";
extent = new ExtentReports(reportPath, true);
extent.AddSystemInfo("Host Name", "MININT-F36S5EH")
.AddSystemInfo("Environment", "QA")
.AddSystemInfo("User Name", "Mohamed Amine");
extent.LoadConfig(projectPath + "extent-config.xml");
}
[Test]
public void DemoReportPass()
{
test = extent.StartTest("DemoReportPass");
Assert.IsTrue(true);
test.Log(LogStatus.Pass, "Assert Pass as condition is True");
}
[Test]
public void DemoReportFail()
{
test = extent.StartTest("DemoReportFail");
Assert.IsTrue(false);
test.Log(LogStatus.Pass, "Assert Pass as condition is Fail");
}
[TearDown]
public void GetResult()
{
var status = TestContext.CurrentContext.Result.Outcome.Status;
var stackTrace = "<pre>" +
TestContext.CurrentContext.Result.StackTrace + "</pre>";
var errorMessage = TestContext.CurrentContext.Result.Message;
if (status == NUnit.Framework.Interfaces.TestStatus.Failed)
{
test.Log(LogStatus.Fail, stackTrace + errorMessage);
}
extent.EndTest(test);
}
[OneTimeTearDown]
public void EndReport()
{
extent.Flush();
extent.Close();
}
}
}
и когда я запускаю проект, этот класс игнорируется. затем в тестовом классе выше, который я хочу запустить, я создал экземпляр класса, но не могу вызвать методы, содержащиеся в классе
using System;
using GettingStartedWithLoadTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.ObjectModel;
using MS.Dynamics.TestTools.CloudCommonTestUtilities.Authentication;
using MS.Dynamics.TestTools.CloudCommonTestUtilities.Enums;
using Microsoft.Dynamics.TestTools.Dispatcher.Client;
using MS.Dynamics.TestTools.DispatcherProxyLibrary.ApplicationForms;
using MS.Dynamics.Performance.Framework.TaskRecorder;
using MS.Dynamics.TestTools.CloudCommonTestUtilities;
using System.Text;
using System.IO;
using RelevantCodes.ExtentReports;
namespace TatAutomationFramework.Web
{
[TestClass]
public sealed class TestFullScenarioBase
{
StringBuilder sb;
/// <summary>
/// Gets the test context. Use the property for setting test transactions
in the performance tests.
/// </summary>
public TestContext TestContext
{
get;
set;
}
[TestCleanup]
public void TestCleanup()
{
Client.Close();
Client.Dispose();
_userContext.Dispose();
}
private DispatchedClient Client;
private UserContext _userContext;
private TimerProvider timerProvider;
[TestInitialize]
public void TestSetup()
{
// For multi-user uncomment following lines
//if (this.TestContext != null)
//{
// timerProvider = new TimerProvider(this.TestContext);
//}
SetupData();
_userContext = new UserContext(UserManagement.AdminUser);
// For multi-user testing use this line
// Client = new DispatchedClientHelper().GetClient();
Client = DispatchedClient.DefaultInstance;
Client.ForceEditMode = false;
Client.Company = WellKnownCompanyID.USMF.ToString();
Client.Open();
}
private ClientContext CreateClientContext()
{
if (timerProvider != null)
{
return ClientContext.Create(Client, timerProvider.OnBeginTimer,
timerProvider.OnEndTimer);
}
return ClientContext.Create(Client);
}
private PurchTable PurchTableForm;
private PurchCreateOrder PurchCreateOrderForm;
private string PurchCreateOrder_PurchTable_OrderAccount;
private string PurchTable_PurchLine_ItemId;
private string PurchTable_InventoryDimensionsGrid_InventSiteId;
private decimal PurchTable_PurchLine_PurchQtyGrid;
private decimal PurchTable_PurchLine_PurchPriceGrid;
private PurchEditLines PurchEditLinesForm;
private string PurchEditLines_PurchParmTable_Num;
private void SetupData()
{
PurchCreateOrder_PurchTable_OrderAccount = "US_TX_008";
PurchTable_PurchLine_ItemId = "A0002";
PurchTable_InventoryDimensionsGrid_InventSiteId = "2";
PurchTable_PurchLine_PurchQtyGrid = 3m;
PurchTable_PurchLine_PurchPriceGrid = 20m;
PurchEditLines_PurchParmTable_Num = "3";
}
[TestMethod]
public void TestFullScenario()
{
using (var c = this.CreateClientContext())
{
using (var c1 = c.Navigate<PurchTable>("purchtablelistpage",
Microsoft.Dynamics.TestTools.Dispatcher.MenuItemType.Display))
{
PurchTableForm = c1.Form<PurchTable>();
using (var c2 = c1.Action("SystemDefinedNewButton_Click"))
{
Microsoft.Dynamics.TestTools.Dispatcher
.Client.Controls
.CommandButtonControl.Attach(PurchTableForm,"SystemDefinedNewButton")
.Click();
using (var c3 = c2.Attach<PurchCreateOrder>())
{
PurchCreateOrderForm = c3.Form<PurchCreateOrder>();
PurchCreateOrderForm.PurchTable_OrderAccount
.SetValue(PurchCreateOrder_PurchTable_OrderAccount);
PurchCreateOrderForm.OK.Click();
}
}
PurchTableForm.LineSpec.MarkActiveRow();
PurchTableForm.PurchLine_ItemId.SetValue(PurchTable_PurchLine_ItemId);
PurchTableForm
.InventoryDimensionsGrid_InventSiteId
.SetValue(PurchTable_InventoryDimensionsGrid_InventSiteId);
PurchTableForm.PurchLine_PurchQtyGrid
.SetValue(PurchTable_PurchLine_PurchQtyGrid);
PurchTableForm.PurchLine_PurchPriceGrid
.SetValue(PurchTable_PurchLine_PurchPriceGrid);
Microsoft.Dynamics.TestTools.Dispatcher.Client
.Controls.CommandButtonControl
.Attach(PurchTableForm,"SystemDefinedSaveButton").Click();
PurchTableForm.Purchase.Activate();
PurchTableForm.ButtonConfirm.Click();
PurchTableForm.Receive.Activate();
using (var c4 = c1.Action("buttonUpdatePackingSlip_Click"))
{
PurchTableForm.ButtonUpdatePackingSlip.Click();
using (var c5 = c4.Attach<PurchEditLines>())
{
PurchEditLinesForm = c5.Form<PurchEditLines>();
PurchEditLinesForm.GridParmTable.MarkActiveRow();
PurchEditLinesForm.PurchParmTable_Num
.SetValue(PurchEditLines_PurchParmTable_Num);
PurchEditLinesForm.OK.Click();
}
}
}
}
}
BasicReport BsRep = new BasicReport();
}
}
1 ответ
Сценарий, которым вы придерживаетесь, отличается и не может помочь вам архивировать желаемый результат: изменения, которые вам необходимо внести,
-Вы не можете вызвать аннотацию TestNG в том же классе по времени отправки. Вы уже вызывали аннотацию для TestClass, поэтому TestNG не может вызвать ее для класса BasicReport.
-Для того чтобы это произошло, вам нужно вызвать каждый требуемый объект Extent Report в свой тестовый класс. И вам нужно вызывать Common-методы из Base Class, расширяя его. Дест класс: Базовый класс
-Если вы хотите создать единый отчет, то для всех ваших тестов определите только класс Basic Report. Иначе, Вы можете вызвать создание отчета перед аннотацией @Test для каждого отдельного теста. Итак, твое творение было вызвано.
-Manage аннотации TestNG с TestClass и вызов методов из BaseReport, вам просто нужно вызвать его, расширив его.
Таким образом, вам придется вручную вызывать все методы базового класса. Вы не можете вызвать его с помощью TestNG в рамках текущего выполнения.