Получение списка ошибочных утверждений в отчете Gauge каждый раз при сбое - PullRequest
0 голосов
/ 12 февраля 2019

Я использую Gauge от Thoughtworks для автоматизации моих тестов пользовательского интерфейса.Каждый раз, когда в моих тестах происходит сбой подтверждения, в нем выводится сообщение, указанное в утверждении.

Например, когда этот код не выполняется из сценария # 1

Assert.True(listsMatch, "There are differences between the Test Dropdown List on the Report Template Editor page and the reference list");

Это сообщение отправляется в Gauge Automationотчет в сценарии № 1 отчет

There are differences between the Test Dropdown List on the Report Template Editor page and the reference list

  Expected: True

  But was:  False

Проблема возникает, когда происходит сбой следующего утверждения (в следующем сценарии), что все сообщения для предыдущих ошибок подтверждения все перечислены (для обоих сценариев сбоя)вместо только нового (для второго неудачного сценария).Например, выходные данные будут выглядеть следующим образом: сообщение о неудачном подтверждении из сценария № 1 указано ниже как «2)», а сообщение о неудачном утверждении из сценария № 2 указано ниже как «1)»

Multiple failures or warnings in test:

  1)   The OK button was not visible to click on after 6 seconds

  Expected: True

  But was:  False



  2)   There are differences between the Test Dropdown List on the Report Template Editor page and the reference list

  Expected: True

  But was:  False

Как получить только новое сообщение подтверждения для вывода в отчет?Есть ли способ сделать это?

Я не смог найти никаких возможных решений для этого

Я ожидал бы, что для любого данного утверждения только сообщение, связанное с этим утверждениембудет выводиться в отчет Gauge Automation вместо списка всех сбоев во всех тестах.

Еще одна деталь, о которой я подумал, заключается в том, что утверждения находятся в разных сценариях.

Запрошенопримеры кода (Обратите внимание, что это пример кода, иллюстрирующий распределенную природу Asserts. Я думаю, что я обнаружил большинство незначительных проблем при создании примера, но если я пропустил определение переменной или что-то незначительное, осознайте, что это всего лишь пример, а не код, который я запускаю): '' 'c #

class Steps_Button_OK
{
    [Step("Click the OK button")]
    public void Click()
    {
        double waitCount = 0;
        int maxWait = 5;
        int waitInterval = 1;
        int numOfElements = 0;

        // This for loop is made to poll to see if the elements have loaded yet.
        do
        {
            numOfElements = ButtonWebElementList.Count;
            if (numOfElements > 0)
            {
                break;
            }
            else
            {
                waitCount += waitInterval;
                DriverExtensions.WaitXSeconds(waitInterval);
            }
        } while (numOfElements <= 0 && waitCount < maxWait);

        if (waitCount >= maxWait)
        {
            GaugeMessages.WriteMessage("The {0} button was NOT found under the maximum wait time of {1} seconds.", this.ButtonDescriptor, maxWait);
            screenshotsteps.TakeFullScreenshotAndWriteStep("Exception");
            Assert.True(false);
        }
        if (logging)
        {
            GaugeMessages.WriteMessage("The {0} button was found at {1} seconds.", this.ButtonDescriptor, waitCount);
        }
        ButtonWebElement.Click();
    }
}


class Steps_Test_Dropdown
{
    [Step("Verify Lists Match")]
    public void OptionsMatchListInScenStore()
    {
        PO_BasePageObject_SelectDropdown _selectDropdownElement = new PO_BasePageObject_SelectDropdown();
        string scenarioStoreVariable = "OldList"; 
        int maxWait = 5; 
        double waitInterval = 1;
        bool listsMatch = true;
        IList<string> oldStringList = (IList<string>)scenarioStore.Get(scenarioStoreVariable);
        _selectDropdownElement.Options_WaitToExist(maxWait, waitInterval);
        IList<string> dropdownTextList = _selectDropdownElement.Options_ValidList();

        int oldLength = oldStringList.Count;
        int drpdwnLength = dropdownTextList.Count;

        // Make sure all of the dropdown text values are in the reference (old) String list
        foreach (string feString in dropdownTextList)
        {
            if (!oldStringList.Contains(feString))
            {
                listsMatch = false;
                GaugeMessages.WriteMessage("- The value {0} is in the {1} dropdown list but not in the reference list", feString, _selectDropdownElement.SelectDescriptor);
            }
        }

        // Make sure all of the reference (old) list text values are in the Test dropdown list
        foreach (string feString in oldStringList)
        {
            if (!dropdownTextList.Contains(feString))
            {
                listsMatch = false;
                GaugeMessages.WriteMessage("- The value {0} is in the reference list but not in the {1} dropdown list", feString, _selectDropdownElement.SelectDescriptor);
            }
        }

        GaugeMessages.WriteMessage("There are {0} tests listed in the {1} Dropdown", drpdwnLength, _selectDropdownElement.SelectDescriptor);
        GaugeMessages.WriteMessage("There are {0} tests listed in the reference list", oldLength);

        // Assert to check that the lists match (or don't) 

        Assert.True(listsMatch, "There are differences between the {0} Dropdown List and the reference list", _selectDropdownElement.SelectDescriptor);
    }
}

' ''

...