Базовым классом является класс отчета и два других тестовых класса: 1.TelerikOutlook и 2.UnitTest1. Я расширенный класс отчета в обоих классах, но в html в файле отчета отображаются только последние данные отчета теста.
it не работает должным образом, отчет генерируется, но содержит только последний класс теста
using AventStack.ExtentReports;
using AventStack.ExtentReports.Reporter;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Outlook
{
public class Report
{
protected ExtentReports _extent;
protected ExtentTest _test;
public Report()
{ }
[OneTimeSetUp]
public void BeforeClass()
{
try
{
//To create report directory and add HTML report into it
_extent = new ExtentReports();
var dir = AppDomain.CurrentDomain.BaseDirectory.Replace("\\bin\\Debug", "");
DirectoryInfo di = Directory.CreateDirectory(dir + "\\Test_Execution_Reports");
var htmlReporter = new ExtentHtmlReporter(dir + "\\Test_Execution_Reports" + "\\Automation_Report" + ".html");
_extent.AddSystemInfo("Environment", "Journey of Quality");
_extent.AddSystemInfo("User Name", "Sanoj");
_extent.AttachReporter(htmlReporter);
}
catch (Exception e)
{
throw (e);
}
}
[SetUp]
public void BeforeTest()
{
try
{
_test = _extent.CreateTest(TestContext.CurrentContext.Test.Name);
}
catch (Exception e)
{
throw (e);
}
}
[TearDown]
public void AfterTest()
{
try
{
var status = TestContext.CurrentContext.Result.Outcome.Status;
var stacktrace = "" + TestContext.CurrentContext.Result.StackTrace + "";
var errorMessage = TestContext.CurrentContext.Result.Message;
Status logstatus;
switch (status)
{
case TestStatus.Failed:
logstatus = Status.Fail;
// string screenShotPath = Capture(driver,
TestContext.CurrentContext.Test.Name);
_test.Log(logstatus, "Test ended with " + logstatus + " – " + errorMessage);
// _test.Log(logstatus, "Snapshot below: "
+_test.AddScreenCaptureFromPath(screenShotPath));
break;
case TestStatus.Skipped:
logstatus = Status.Skip;
_test.Log(logstatus, "Test ended with " + logstatus);
break;
default:
logstatus = Status.Pass;
_test.Log(logstatus, "Test ended with " + logstatus);
break;
}
}
catch (Exception e)
{
throw (e);
}
}
[OneTimeTearDown]
public void AfterClass()
{
try
{
_extent.Flush();
}
catch (Exception e)
{
throw (e);
}
}
}
}
класс Telerik расширяет класс отчета
Test case 1 ->
using NUnit.Framework;
using System;
using System.Threading;
using System.Windows;
using System.Windows.Automation;
using TestStack.White;
using TestStack.White.Configuration;
using TestStack.White.InputDevices;
using TestStack.White.UIItems;
using TestStack.White.UIItems.Finders;
using TestStack.White.UIItems.WindowItems;
namespace Outlook
{
[TestFixture]
public class TelerikOutlook : Report
{
[Test]
public void TestMethod()
{
_test = _extent.CreateTest("TestMethod");
var outlook_path ="C:\\jUsers\\ajay.b\\AppData\\Local\\Apps\\2.0\\
OA613NLD.BW2\\PTQ504M2.OJL\\tele..tion_0ec16cac1aa370e1_0
7e2.0002_8d746ee446d800cb\\TelerikOutlookInspiredApp.EXE";
// launch the application
var application = Application.Launch(outlook_path);
//Thread.Sleep(70000);
//Application Window
var window = application.GetWindow("My Application");
// wait till window visible
window.WaitTill(delegate () { return window.Visible; });
var calendarBtn = window.Get(SearchCriteria.ByText("Calendar"));
Mouse.Instance.Location = calendarBtn.ClickablePoint;
Mouse.Instance.Click();
//Calendar window
var calendar = application.GetWindow("mark@telerikdomain.com - calendar");
#region Current Month View
var day = calendar.Get(SearchCriteria.ByText("26"));
Mouse.Instance.Location = day.ClickablePoint;
Mouse.Instance.Click();
#endregion
#region Create Appointment
//to enable Create Appointment Button
Point p = new Point(674, 377);
Mouse.Instance.Click(p);
//click on create appointment Buttton
var appointment = calendar.Get(SearchCriteria.ByText("Create appointment"));
// var list = calendar.Get(SearchCriteria.ByText("03-02-2020 00:00:00"));
Mouse.Instance.Location = appointment.ClickablePoint;
Mouse.Instance.Click();
//Get Window of Create Appointment
var appointmentWindows = application.GetWindows();
Window appointmentWindow = null;
foreach (var item in appointmentWindows)
{
if (item.Name == "Telerik.Windows.Controls.AppointmentDialogViewModel")
{
appointmentWindow = item;
}
}
//appointmentWindow = application.GetWindow("Appointment-Untitled");
//Subject Input field
var subject = appointmentWindow.Get<TextBox>(
SearchCriteria.ByAutomationId("SubjectTextBox"));
// CoreAppXmlConfiguration.Instance.BusyTimeout = 20000;
// subject.ClickAtCenter();
Mouse.Instance.Location = subject.ClickablePoint;
Mouse.Instance.Click();
Thread.Sleep(1000);
Keyboard.Instance.Enter("Automated Subject of appointment");
//Description Input field
var description = appointmentWindow.Get<TextBox>
(SearchCriteria.ByAutomationId("DescriptionTextBox"));
Mouse.Instance.Location = description.ClickablePoint;
Mouse.Instance.Click();
Thread.Sleep(1000);
Keyboard.Instance.Enter("Automated Description of appointment");
//Start time input
var startDate = appointmentWindow.Get(SearchCriteria.ByAutomationId("PART_DateTimeInput"));
Mouse.Instance.Location = startDate.ClickablePoint;
Mouse.Instance.Click();
Thread.Sleep(1000);
Keyboard.Instance.Enter("06-02-2020 00:00");
//save n close of appointment
var okBtn = appointmentWindow.Get(SearchCriteria.ByAutomationId("OKButton"));
Mouse.Instance.Location = okBtn.ClickablePoint;
Mouse.Instance.Click();
#endregion
#region Drag N Drop Element
//getting appointment element and drop at any date
var drag = calendar.Get(SearchCriteria.ByText("abcd : 06-02-2020 00:00:00 - 06-02-2020
00:00:00"));
var drop = calendar.Get(SearchCriteria.ByText("03-02-2020 00:00:00"));
Point d = drag.ClickablePoint;
Thread.Sleep(2000);
application.WaitWhileBusy();
Thread.Sleep(2000);
// drag.Click();
// Mouse.Instance.DragAndDrop(drag,drop);
// Thread.Sleep(2000);
Mouse.Instance.Click(d);
Mouse.LeftDown();
// Thread.Sleep(2000);
var stepCount = 30;
var stepAmount = (float)(drag.ClickablePoint.Y - drop.ClickablePoint.Y) / stepCount;
for (var i = 0; i < stepCount; i++)
{
Mouse.Instance.Location = new Point(Mouse.Instance.Location.X, Mouse.Instance.Location.Y
- stepAmount);
Thread.Sleep(75);
}
Thread.Sleep(2000);
Mouse.LeftUp();
Thread.Sleep(2000);
#endregion
application.Close();
}
}
}
UnitTest1 расширяет класс отчета
Testcase 2-
using System;
using System.IO;
using TestStack.White;
using TestStack.White.UIItems.Finders;
using TestStack.White.Factory;
using System.Runtime.InteropServices;
using Outlook1 = Microsoft.Office.Interop.Outlook;
using System.Threading;
using System.Linq;
using TestStack.White.UIItems;
using TestStack.White.UIItems.WindowItems;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using AventStack.ExtentReports;
using AventStack.ExtentReports.Reporter;
namespace Outlook
{
[TestClass]
public class UnitTest1 : Report
{
[TestMethod]
public void TestMethod12()
{
_test = _extent.CreateTest("TestMethod12");
//var outlookPath = Path.Combine(
// Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86),
// @"Microsoft Office\Office16\OUTLOOK.EXE");
//var application = Application.Launch(outlookPath);
var outlook_path = "C:\\jProgram Files\\Microsoft Office\\root\\Office16\\OUTLOOK.EXE";
//verify the path
Assert.AreEqual(outlook_path, "C:\\Program Files\\Microsoft
Office\\root\\Office16\\OUTLOOK.EXE");
// launch the application
var application = Application.Launch(outlook_path);
Thread.Sleep(2000);
//verify the launched application
Assert.AreEqual(application.Name, "OUTLOOK");
// var windows1 = application.GetWindows();
// get explorer window
var explorer = application.GetWindow("Inbox - ajay.bhosale@afourtech.com - Outlook");
explorer.DisplayState = DisplayState.Maximized;
//verify the screen
Assert.AreEqual(explorer.Name, "Inbox - ajay.bhosale@afourtech.com - Outlook");
// click "New E-mail" button to start composing new email
var newEmailBtn = explorer.Get(SearchCriteria.ByText("New Email"));
newEmailBtn.Click();
//verify "New E-mail" Button is clicked
Assert.IsTrue(newEmailBtn.Enabled);
// get composer window
var composer = application.GetWindow(
SearchCriteria.ByText("Untitled - Message (HTML) "),
InitializeOption.NoCache);
//verify create appointment window
Assert.AreEqual(composer.Name, "Untitled - Message (HTML) ");
// fill out "To" field
var toField = composer.Get<TextBox>
(SearchCriteria.ByClassName("RichEdit20WPT").AndByText("To"));
toField.Enter("ajay.bhosale@afourtech.com");
//verify input text of "To" field
Assert.IsTrue(toField.Text.Equals("ajay.bhosale@afourtech.com"));
// fill out "Subject" field
var subjectField = composer.Get<TextBox>
(SearchCriteria.ByClassName("RichEdit20WPT").AndByText("Subject"));
subjectField.Enter("Test Automated UI email");
//verify input text of "Subject" field
Assert.IsTrue(subjectField.Text.Equals("Test Automated UI email"));
//var message = composer.Get(SearchCriteria.ByText("Untitled Message"));
//message.Enter("asdfghjklkjhgfdsasdfghjkkjhgfdssdfghjklkjhgfds");
//Thread.Sleep(2000);
//var message = composer.Get(SearchCriteria.ByText("Message"));
//message.GetType();
//message.SetValue("Automated appointment message");
//message.Enter("Automated appointment message");
//change focus to get Outlook process registered in running object table
Thread.Sleep(5000);
var windows = WindowFactory.Desktop.DesktopWindows();
//Thread.Sleep(20000);
var desktop = windows.Last().GetElement(SearchCriteria.ByClassName("SysListView32"));
// Thread.Sleep(15000);
desktop.SetFocus();
Thread.Sleep(15000);
Outlook1.Application outlookCom = Marshal.GetActiveObject("Outlook.Application") as Outlook1.Application;
var sentMailItem = outlookCom.ActiveInspector().CurrentItem as Outlook1.MailItem;
var body = sentMailItem.Body;
//var body = sentMailItem.HTMLBody;
//var index = body.IndexOf(@"</body", StringComparison.InvariantCultureIgnoreCase);
//var index1 = body.IndexOf(@"</p", StringComparison.InvariantCultureIgnoreCase);
var bodydata = "Hi, " + " " + "\n This is an Automated Email. \n" + "Thanks & Regards \n" + "Afourtech Pvt Ltd. ";
//sentMailItem.HTMLBody = body.Insert(bodydata);
sentMailItem.Body = body.Insert(1, bodydata);
//click on send button
var send = composer.Get(SearchCriteria.ByText("Send").AndByClassName("Button"));
Thread.Sleep(3000);
send.Click();
//verify save and close button is clicked
Assert.IsFalse(send.Visible);
// give Outlook time to send off the email
Thread.Sleep(TimeSpan.FromSeconds(5));
application.WaitWhileBusy();
explorer.Close();
application.Close();
}
}
}