Livingdoc仅生成上一次运行测试的报告

发布于 2025-02-07 22:55:30 字数 4266 浏览 3 评论 0原文

我是Specflow的新手。我有20个功能,并通过了。但是当我生成LivingDoc报告时,它显示仅出于最后执行的功能传递。它显示了其余功能的“未执行”。谁能帮我在哪里犯错?

我的项目树是:

|-Project
  +----Feature
  |------Login.feature
  +----Steps
  |------Login.cs
  +----Drivers
  |------SetDriver.cs
  +----Hooks
  |------BrowserHook.cs
  +----Pages
  |------PageObjectManager.cs
  |------LoginPage.cs

驱动程序设置:

public class SetDrivers
{
    private Lazy<IWebDriver> _driver;

    public SetDrivers()
    {
        _driver = new Lazy<IWebDriver>(Setup);
    }

    public IWebDriver Current => _driver.Value;

    public IWebDriver Setup()
    {
        var chromeDriverServices = ChromeDriverService.CreateDefaultService();
        var browserOption = GetBrowserOptions("chrome");

        var driver = new ChromeDriver(chromeDriverServices, browserOption);

        driver.Manage().Window.Maximize();

        return driver;
    }

    private dynamic GetBrowserOptions(String browserName)
    {
        if (browserName.ToLower() == "chrome")
        {
            return new ChromeOptions();
        }
        else if (browserName.ToLower() == "firefox")
        {
            return new FirefoxOptions();
        }
        else
        {
            return new ChromeOptions();
        }
    }
}

钩子:

[Binding]
public sealed class BrowserHooks
{

    [BeforeTestRun]
    public static void BeforeTestRun(ObjectContainer objectContainer)
    {
        objectContainer.BaseContainer.Resolve<SetDrivers>();
    }

    [BeforeScenario ("Smoke")]
    public static void BeforeSenerio(SetDrivers drivers)
    {
        var pageObjects = new PageObjectManager(drivers.Current);
        pageObjects.loadUrl();
    }

    [AfterScenario]
    public void AfterScenario(SetDrivers drivers)
    {
        var pageObjects = new PageObjectManager(drivers.Current);
        pageObjects.tearDown();
    }
}

步骤:

[Binding]
public class LoginSteps
{
    private LoginPage _loginPage;

    public LoginSteps(SetDrivers drivers)
    {
        _loginPage = new LoginPage(drivers.Current);
    }

    [Given(@"user is in login page")]
    public void GivenUserIsInLoginPage()
    {
        _loginPage.clickLoginBtn();
    }
    
    [When(@"user Enters ""(.*)"" and ""(.*)""")]
    public void WhenUserEntersAnd(string email, string password)
    {
        _loginPage.setUserEmail(email);
        _loginPage.setPassword(password);
    }
    
    [When(@"click Login Button")]
    public void WhenClickLoginButton()
    {
        _loginPage.clickLogin();
    }
    
    [Then(@"Home Page should be visible")]
    public void ThenHomePageShouldBeVisible()
    {
        Assert.IsTrue(_loginPage.isLoggedIn());
    }
}

功能:

Feature: Login
    User login test

@Smoke
Scenario Outline: User wants to login with valid email and password
    Given user is in login page
    When user Enters "<Email>" and "<Password>"
    And click Login Button
    Then Home Page should be visible
    Examples:
        | Email         | Password |
        | [email protected] | 121212A  |

页面对象管理器:< /strong>

public class PageObjectManager
    {
        private const string url = "https://www.pinterest.com/";

        private readonly IWebDriver _webDriver;

        public PageObjectManager(IWebDriver webDriver)
        {
            _webDriver = webDriver;
        }
        public void loadUrl()
        {
            _webDriver.Url = url;
        }

        public void tearDown()
        {
            if (_webDriver != null)
            {
                _webDriver.Quit();
            }
        }
}

“

“测试结果”

I am new to Specflow. I have 20 features and passed. But when I generated the Livingdoc report, it shows passed for only the last executed feature. It shows "Not executed" for the rest of the features. Can anyone help me where I am making mistakes?

My Project tree is:

|-Project
  +----Feature
  |------Login.feature
  +----Steps
  |------Login.cs
  +----Drivers
  |------SetDriver.cs
  +----Hooks
  |------BrowserHook.cs
  +----Pages
  |------PageObjectManager.cs
  |------LoginPage.cs

Driver Setup:

public class SetDrivers
{
    private Lazy<IWebDriver> _driver;

    public SetDrivers()
    {
        _driver = new Lazy<IWebDriver>(Setup);
    }

    public IWebDriver Current => _driver.Value;

    public IWebDriver Setup()
    {
        var chromeDriverServices = ChromeDriverService.CreateDefaultService();
        var browserOption = GetBrowserOptions("chrome");

        var driver = new ChromeDriver(chromeDriverServices, browserOption);

        driver.Manage().Window.Maximize();

        return driver;
    }

    private dynamic GetBrowserOptions(String browserName)
    {
        if (browserName.ToLower() == "chrome")
        {
            return new ChromeOptions();
        }
        else if (browserName.ToLower() == "firefox")
        {
            return new FirefoxOptions();
        }
        else
        {
            return new ChromeOptions();
        }
    }
}

Hooks:

[Binding]
public sealed class BrowserHooks
{

    [BeforeTestRun]
    public static void BeforeTestRun(ObjectContainer objectContainer)
    {
        objectContainer.BaseContainer.Resolve<SetDrivers>();
    }

    [BeforeScenario ("Smoke")]
    public static void BeforeSenerio(SetDrivers drivers)
    {
        var pageObjects = new PageObjectManager(drivers.Current);
        pageObjects.loadUrl();
    }

    [AfterScenario]
    public void AfterScenario(SetDrivers drivers)
    {
        var pageObjects = new PageObjectManager(drivers.Current);
        pageObjects.tearDown();
    }
}

Steps:

[Binding]
public class LoginSteps
{
    private LoginPage _loginPage;

    public LoginSteps(SetDrivers drivers)
    {
        _loginPage = new LoginPage(drivers.Current);
    }

    [Given(@"user is in login page")]
    public void GivenUserIsInLoginPage()
    {
        _loginPage.clickLoginBtn();
    }
    
    [When(@"user Enters ""(.*)"" and ""(.*)""")]
    public void WhenUserEntersAnd(string email, string password)
    {
        _loginPage.setUserEmail(email);
        _loginPage.setPassword(password);
    }
    
    [When(@"click Login Button")]
    public void WhenClickLoginButton()
    {
        _loginPage.clickLogin();
    }
    
    [Then(@"Home Page should be visible")]
    public void ThenHomePageShouldBeVisible()
    {
        Assert.IsTrue(_loginPage.isLoggedIn());
    }
}

Feature:

Feature: Login
    User login test

@Smoke
Scenario Outline: User wants to login with valid email and password
    Given user is in login page
    When user Enters "<Email>" and "<Password>"
    And click Login Button
    Then Home Page should be visible
    Examples:
        | Email         | Password |
        | [email protected] | 121212A  |

Page object manager:

public class PageObjectManager
    {
        private const string url = "https://www.pinterest.com/";

        private readonly IWebDriver _webDriver;

        public PageObjectManager(IWebDriver webDriver)
        {
            _webDriver = webDriver;
        }
        public void loadUrl()
        {
            _webDriver.Url = url;
        }

        public void tearDown()
        {
            if (_webDriver != null)
            {
                _webDriver.Quit();
            }
        }
}

Livingdoc Report

Test results

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文