【问题标题】:Prevent Specflow Step Parameter Displaying In Specflow Report i.e. 'password'防止在 Specflow 报告中显示 Specflow 步骤参数,即“密码”
【发布时间】:2019-06-20 00:05:21
【问题描述】:

我有一堆使用“用户名”和“密码”参数的 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 功能可以散列值(尚未找到任何文档)。

【问题讨论】:

    标签: c# selenium selenium-webdriver specflow


    【解决方案1】:

    将每封电子邮件的密码放在 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'
    

    【讨论】:

    • 谢谢。我会研究这个方法。在我的步骤和功能文件中需要一些返工。我猜想使用 Scenario.Set 方法,您基本上可以存储无限组合,并且您将传入的电子邮件“匹配”到关联的配对密码?
    • @Scott:没错。它就像一袋数据,您可以一步一步地传递。
    • 整理了我的问题。谢谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多