无法使用C#在硒中生成范围报告(版本3.1.3) [英] Unable to generate Extent reports (Version 3.1.3)in selenium with c#

查看:73
本文介绍了无法使用C#在硒中生成范围报告(版本3.1.3)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是C#的新手,我正在尝试使用ExtentReports生成报告(使用的版本:3.13).谢谢您的帮助.

I am new to C# and I am trying to use ExtentReports for generating reports ( Version used: 3.13). Any help with this would be much appreciated thank you.

我遇到以下错误: 消息:System.InvalidOperationException:没有启动任何报告程序.必须启动Atleast 1报告程序才能创建测试.

I am getting below error: Message: System.InvalidOperationException : No reporters were started. Atleast 1 reporter must be started to create tests.

这是我的代码:`

using AventStack.ExtentReports;
using AventStack.ExtentReports.Reporter;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AutomationReports
    {
    class ReportsGenerationClass
        {
        protected ExtentReports _extent;
        protected ExtentTest _test;

        [OneTimeSetUp]
        protected void Setup()
            {
            var dir = TestContext.CurrentContext.TestDirectory + "\\";
            var fileName = this.GetType().ToString() + ".html";
            var htmlReporter = new ExtentHtmlReporter(dir + fileName);

            _extent = new ExtentReports();
            _extent.AttachReporter(htmlReporter);
            }

        [OneTimeTearDown]
        protected void TearDown()
            {
            _extent.Flush();
            }

        [SetUp]
        public void BeforeTest()
            {
            _test = _extent.CreateTest(TestContext.CurrentContext.Test.Name);
            }

        [TearDown]
        public void AfterTest()
            {
            var status = TestContext.CurrentContext.Result.Outcome.Status;
            var stacktrace = string.IsNullOrEmpty(TestContext.CurrentContext.Result.StackTrace)
                    ? ""
                    : string.Format("{0}", TestContext.CurrentContext.Result.StackTrace);
            Status logstatus;

            switch (status)
                {
                case TestStatus.Failed:
                    logstatus = Status.Fail;
                    break;
                case TestStatus.Inconclusive:
                    logstatus = Status.Warning;
                    break;
                case TestStatus.Skipped:
                    logstatus = Status.Skip;
                    break;
                default:
                    logstatus = Status.Pass;
                    break;
                }

            _test.Log(logstatus, "Test ended with " + logstatus + stacktrace);
            _extent.Flush();
            }


        [Test]
        public void PassingTest()
            {

            ExtentReports extent = new ExtentReports();
            _test = extent.CreateTest("PassingTest");
            Driver.Navigate().GoToUrl("http://www.google.com");

            try
                {
                Assert.IsTrue(true);
                _test.Pass("Assertion passed");
                _test.Log(Status.Pass, "Pass");
                }
            catch (AssertionException)
                {
                _test.Fail("Assertion failed");
                _test.Log(Status.Fail, "Fail");
                throw;
                }
            }
        }
    }

推荐答案

PassingTest方法中,删除以下行:

In PassingTest method, remove the lines:

ExtentReports extent = new ExtentReports();
_test = extent.CreateTest("PassingTest");

它应该工作.

您已经在[OneTimeSetUp][SetUp]方法中正确地初始化了ExtentReports对象和_test字段,但是在测试方法内部却被多余且错误地覆盖了.

You already initialize the ExtentReports object and the _test field correctly in the [OneTimeSetUp] and [SetUp] methods, but you were overwriting it redundantly and incorrectly inside the test method.

这篇关于无法使用C#在硒中生成范围报告(版本3.1.3)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆