2016-07-06 1 views
0

Я бы хотел назвать сценарий - скажем, 500 раз - в тесте Герхина без табличных предметов. Причина в том, что я бы хотел использовать рандомизированные переменные вместо того, чтобы писать самостоятельно. Я знаю, как реализовать случайные функции для тестов, но он называется только один раз.Как вызвать сценарий несколько раз без табличных элементов в тесте на поведение?

Например:

Scenario Outline: I want to test speed with different values 
    When I set the speed to <speed> 
    And I wait for 5 seconds 
    Then it plays at <speed> 

    Examples: 
    | speed  | 
    | 10 | 
    | 20 | 
    | 30 | 
    | 40 | 
    | 50 | 

импорта случайных

скорости = [ '10', '20', '30', '40', '50']

Защиту next_speed (): return random.choice (скорости)

Если я использую случайные функции, подобные этому, как я могу назвать этот сценарий 500 раз?

Заранее спасибо.

ответ

-1

Если вы попытаетесь использовать gherkin в качестве инструмента для создания скриптов, у вас будет плохое время. Для этого есть намного лучшие инструменты, такие как сам python или инфраструктура робота. Спросите себя, какое преимущество вы ожидаете от теста на огурчик. Ваш огурец должен ответить «почему» вы что-то делаете, у него должны быть примеры, которые достаточно объясняют разные случаи - и желательно только интересные.

+0

Спасибо! Возможно, вы, вероятно, правы, это не устраняет мою проблему, которую я сейчас испытываю. Есть ли у вас какие-либо другие предложения? Заранее спасибо. – allworldfree

+0

Вы можете использовать фон? –

+0

Спасибо. Если я не ошибаюсь, фон позволяет мне использовать мою случайную функцию по умолчанию, это не о вызове сценария несколько раз, не так ли? – allworldfree

-1

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

Следующие ссылки имеют несколько функций, которые будут создавать динамические строки для вас на этапе определения

http://www.programcreek.com/java-api-examples/index.php?api=gherkin.formatter.model.DataTableRow

или вызвать шаг определение из определения шага

http://www.specflow.org/documentation/Calling-Steps-from-Step-Definitions/

+0

ОП задает вопрос о [Behave] (https://github.com/behave/behave), который полностью написан на Python. Ссылки, которые вы предоставляете, относятся к другому программному обеспечению, написанному на Java. Независимо от того, что можно сделать в этих программных средствах, необязательно возможно с Behave. (И наоборот, могут быть вещи, которые Behave делает, что другие инструменты не делают.) – Louis

+0

Я согласен с Луи. Я только что проверил в выходные, и похоже, что это невозможно реализовать. – allworldfree

-1

Надеюсь, я понимаю ваш вопрос:)

Что можно сказать об этом:

Изменение шага: «Когда я устанавливаю скорость скорости» в

Когда я устанавливаю скорость до {} скорости, так что он принимает аргумент.

В вашей функции: Когда я проверить скорость 500 раз И в этом шаге: Когда я проверить скорость в 500 раз вы:

==> создать цикл в 500 раз:

== ===> выбрать случайную скорость

=====> выполнить другие действия с context.execute_steps и формат (скорость)

Вы должны работать вокруг этого немного, потому что он принимает юникоды, не целые.

==> Однако, с Сабо Питером можно согласиться, что для этого нужно использовать gherkin/python-behave для этого :). Это своего рода беспорядок. Кроме того, даже в моем мышлении здесь это может быть сделано более элегантно.

Вы можете найти некоторые интересные вещи здесь: https://jenisys.github.io/behave.example/tutorials/tutorial08.html Cheerz

Так редактировать после комментария: (после редактирования и написания этого примера он выглядит еще более глупо, то я думал, что это будет, так что да: не использовать ведут себя для этого . Пример:

характеристика: тест функция сценарий: сценарий тестирования дал мне открыть приложение , когда я протестировать приложение в 500 раз при случайной скорости то консоль говорит, что это будет сделано

шаги:

@given (u'I открыть приложение ")

=> Защиту I_open_the_app (контекст):

==> # код, чтобы открыть приложение

@ Когда (u'I протестировать приложение в 500 раз при случайной скорости ')

=> Защита I_test_the_app_500_times_at_random_speed (контекст):

==> для раза я п диапазон (1500):

===> random_speed = random.randint (min_speed, max_speed)

===> context.execute_steps (U '' 'когда я играть на {скорости}' '' .format (скорость = ул (random_speed))

@ Когда (u'I играть на {скорости} ')

=> защиту I_play_at (контекст, скорость)

==> play_at_speed (интермедиат (скорость))

@then (u'the console s Айс это делается ')

=> Защита the_console_says_it_is_done ==> Печать (' это делается ')

+0

Вашему описанию очень сложно следовать. Включите рабочий ответ в свой ответ. – Louis

+0

Отключить сейчас на выходные. Если необходимо, увидишь, что я могу сделать после этого! – Chai

Смежные вопросы