测试自动化 - 页面对象 - 策略设计模式

Test Automation - Page Object - Strategy Design Pattern

我想知道什么是解决我遇到的问题的最佳设计

我的应用程序中有一个页面,您可以在其中创建消息。有多种创建消息的方法,具体取决于用户。

我创建了一个名为 CreateMessagePage 的 class。此 class 包含该页面的所有元素和方法。

我有几种创建消息的方法,每种方法都采用不同的参数:

所以我为每种类型创建了一个 class,每个 class 实现了 CreateMessagePage

                         CreateMessagePage.cs
      |                          |                                  |
CreateMessage.cs      CreateMessageOnBehalfOf.cs      CreateMessageFakeAccount.cs
-CreateMessage()          -CreateMessage()                -CreateMessage()

然后我创建了这些 classes 的实例以用于我的 speckflow 功能步骤(测试用例 class)

例如:

CreateMessage.CreateMessage(string 1, string 2, string 3);

CreateMessageOnBehalfOf.CreateMessage(string 1, string 2, string 3, string 4, string 5);

我想合并策略设计模式但不确定最好的方法是哪些页面对象?我应该合并一个 CreateMessage 接口吗?

只是寻找关于这种情况通常如何在测试自动化框架中完成的意见

我会把它添加为评论,但格式会到处都是。您正在使用 specflow,那么为什么不合并它并添加将创建随机假数据的库 Faker.net?

特征:

Given on the page MyPageName I add a message as a |Country A|
Given on the page MyPageName I add a message as a |Country B|
Given on the page MyPageName I add a message as a |Fake Account|

步骤:

 using Faker; //add faker.net from nuget


         var _randMessage = Faker.Lorem.Sentence(3);


        [Given(@"on the page MyPageName I add a message as a \|(.*)\|")]
    public void GivenOnThePageMyPageNameIAddAMessageAsACountryA(string value)
    {
        switch (value.ToLower())
    {
        case "country a":
             Pages.CreateMessageOnBehalfOf(_randMessage);
            break;

        case "country b":
             Pages.CreateMessage(_randMessage);
            break;

       case "fake account":
            Pages.CreateMessageFakeAccount(_randMessage);
            break;
    }
    }