1

NUnit + SpecFlow + Selenium を使用してテスト フレームワークを構築しています。私は2つのプロジェクトで解決策を持っています(これまでのところ)。最上位にはスイート フレームワークがあるので、PageFactory、DriverFactory、CommonPages などがあります。他のプロジェクトには、実際のテスト (キュウリ)、テスト ステップ、およびテスト ページがあります。どちらのプロジェクトにも同じ NuGet パッケージがインストールされており、2 つ目のプロジェクトにはスイート フレームワークへの参照があります。

すべてがうまくいっているようです: 私は を持っており[BeforeTestRun][BeforeScenario]フレーム[AfterTestRun]ワークでテストを実行すると、それらを見つけて実行できますが、コードが Cucumber 機能に到達すると、それらをスキップするだけです。つまり、それらを強調表示しますが、実行しますそれらに穴をあけないでください。

ステップの定義を確認したところ、そこにあり (定義に移動すると、どのプロジェクトにあるかに関係なくそれらが見つかります)、バインディングは正しいようです。 定義に行く 定義を 見つける

これまでのところ、これは私のコードの例です:

機能: このファイルでは、背景はフレームワーク プロジェクトに配置されたファイルを参照し、シナリオは同じプロジェクト内の機能ステップを参照します。

Feature: Reports
    As an admin
    I want to access to the Reports
    So I can see the information related to my product

Background: 
    When I navigate to the 'Reports' page
    And I navigate to my product reports

@Regression
Scenario: I can open the report
    When I click on the 'overall' tile
    Then the report is displayed
    And the data matches the database

バックグラウンドの手順:

using UI.Suite.CommonPages.Pages;
using OpenQA.Selenium;
using TechTalk.SpecFlow;

namespace UI.Suite.CommonPages.Steps
{
    [Binding]
    public class SideBarNavigation
    {
        private readonly SideMenuComponent sideMenuComponent;

        public SideBarNavigation(IWebDriver driver)
        {
            sideMenuComponent = new SideMenuComponent(driver);
        }

        [When(@"I navigate to the '(.*)' page")]
        public void NavigateTo(string page)
        {
            sideMenuComponent.SideMenuNavigation(page);
        }
    }
}

シナリオの手順:

using NUnit.Framework;
using TechTalk.SpecFlow;
using UI.Products.Tests.Pages;
using OpenQA.Selenium;

namespace UI.Products.Tests.Steps
{
    [Binding]
    public class ReportsSteps
    {
        private readonly ReportsPage _reports;

        public ReportsSteps(IWebDriver driver)
        {
            _reports = new ReportsPage(driver);
        }

        [When(@"I navigate to my product reports")]
        public void WhenINavigateToMyProducts()
        {
            _reports.SelectMyProduct();
        }

        [When(@"I click on the '(.*)' tile")]
        public void WhenIClickOnAGivenReport(string report)
        {
            _reports.SelectReportTileAndConfig(report);
        }

        [Then(@"the report is displayed")]
        public void TheReportDisplays()
        {
            Assert.IsTrue(_reports.HasReportLoaded(), "The report has not loaded correctly");
        }

        [Then(@"the data matches the database")]
        public void TheDataDisplays()
        {
            Assert.IsTrue(_reports.DoesUIMatchDB(), "The data on the database does not match the UI");
        }
    }
}

ご協力いただきありがとうございます。

4

0 に答える 0