Доступ к TestContext в классе SpecFlow Step Binding - PullRequest
3 голосов
/ 07 сентября 2011

Возможно ли получить доступ к MSTest TestContext из класса привязки шага SpecFlow (1.7.1)? В сгенерированном коде файла объектов есть метод FeatureSetup, который принимает в качестве аргумента TestContext, но, очевидно, ничего с ним не делает.

Ответы [ 3 ]

6 голосов
/ 06 февраля 2017

Я нашел способ передать параметры в TestContext и затем получить к ним доступ из SpecFlow.

Добавив [TestClass], который имеет свойство TestContext, и пометив его метод AssemblyInit () как [AssemblyInitialize], чтобы он был инициализирован заблаговременно до запуска тестов, и MSTest сможет заполнить TestContext.

{
    [TestClass]
    public class InitializeTestContext
    {
        public static TestContext Context { get; private set; }

        [AssemblyInitialize]
        public static void AssemblyInit(TestContext context)
        {
            Context = context;
        }
    }
}

А затем можете получить к нему доступ из моего класса BaseSteps:

{
            public abstract class BaseSteps : TechTalk.SpecFlow.Steps
            {
                public string GetTestEnvironment()
                {
                    TestContext testContext = InitializeTestContext.Context;

                    string testEnvironment = testContext.Properties["Environment"].ToString();

                    return testEnvironment;
                }
            }
}
3 голосов
/ 03 октября 2011

Gáspár Nagy ответил в гугл-группе SpecFlow: https://groups.google.com/group/specflow/browse_thread/thread/5b038e3e283fdbfe#

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

0 голосов
/ 13 сентября 2016

Далее к ответу Валентина. Вот пример генератора тестов, который будет добавлен в контекст теста. Это из той же группы Google.

Gáspár Nagy сказал, что это может быть добавлено к провайдеру, который отправляет в specflow.

Так что, чтобы ответить на вопрос ОП, да, это возможно.

...