Запретить отображение параметра шага Specflow в отчете Specflow, то есть «пароль» - PullRequest
1 голос
/ 19 июня 2019

У меня есть несколько определений шагов Specflow, которые используют параметры для «Имя пользователя» и «Пароль».

Когда шаги отображаются в отчете Specflow, он отображает переданные значения. Обычно это не проблема, так как он запускается в тестовых средах, а отчет отправляется по электронной почте только отдельным лицам ... Однако выходные данные хранятся локально, и я хочу переместить их в более доступное место (в случае, если я недоступен) ... при этом нужно скрывать значения.

Я хочу иметь возможность хешировать определенные параметры после их использования. Таким образом, в отчете по умолчанию Specflow не отображаются реальные значения.

У меня уже есть потенциальный обходной путь, использующий значения, хранящиеся в файле JSON, который переопределяет параметры шага ... и из метода проб и ошибок я знаю, что этот подход не отображает значения JSON ... вместо этого в отчете Specflow хранятся значения первоначально использовался в файле возможностей.

Пример сценария функции:

Scenario: As a registered user I can log in with a valid email and password
Given I am on the Home page
When I click the Sign In option
Then The login page is displayed
When I enter valid login details and submit 'tester@test.co.uk', 'Password1!'
Then I am logged in
And The Sign In display name is displayed in the header 'Tester McTestFace'

Пример определения шага:

[When(@"I enter valid login details and submit '(.*)', '(.*)'")]
    public void WhenIEnterValidLoginDetailsAndSubmit(string email, string password)
    {
        PageAction.CompleteLoginForm(email, password);
    }

Затем он передается в WebDriver для выполнения соответствующих действий

Мой метод переопределения Json - мой единственный вариант на данный момент, но, надеюсь, есть некоторые действительно простые встроенные функциональные возможности Specflow, которые могут хэшировать значения (пока не найдется документация).

1 Ответ

1 голос
/ 19 июня 2019

Введите пароли для каждого электронного письма в ScenarioContext, а затем просто укажите адрес электронной почты из сценария.

Ваше определение шага становится:

[Binding]
public class LoginSteps
{
    private readonly ScenarioContext scenario;

    public LoginSteps(ScenarioContext scenario)
    {
        this.scenario = scenario;

        scenario.Set("Password1", "email1");
        scenario.Set("Password2", "email2");
        ...
        scenario.Set("PasswordN", "emailN");
    }

    [When(@"I log in as '(.*)'")]
    public void WhenILogInAs(string email)
    {
        PageAction.CompleteLoginForm(email, scenario.Get(email));
    }
}

И ваш сценарийстановится:

Scenario: As a registered user I can log in with a valid email and password
    Given I am on the Home page
    When I click the Sign In option
    Then The login page is displayed
    When I log in as 'tester@test.co.uk'
    Then I am logged in
    And The Sign In display name is displayed in the header 'Tester McTestFace'
...