Oven logo

Oven

Published

Provides a tag-expression parser and evaluation logic for cucumber/behave

pip install cucumber-tag-expressions

Package Downloads

Weekly DownloadsMonthly Downloads

Authors

Jens Engel

Requires Python

>=3.10

Dependencies

    Cucumber logo
    Cucumber Tag Expressions

    Readable boolean expressions to select features and scenarios marked with tags in Gherkin

    npm build backers sponsors build

    # -- SIMPLE TAG-EXPRESSION EXAMPLES:
    @a and @b
    @a or @b
    not @a
    
    # -- MORE TAG-EXPRESSION EXAMPLES:
    @a and not @b
    (@a or @b) and not @c
    

    Getting Started

    Cucumber Tag Expressions is available as cucumber-tag-expressions on PyPI.

    pip install cucumber-tag-expressions
    

    Parse tag expressions and evaluate them against a set of tags.

    >>> from cucumber_tag_expressions import parse
    
    # Tagged with @fast
    >>> fast = parse("@fast")
    >>> fast({"@fast", "@wip"})
    True
    >>> fast({"@performance", "@slow"})
    False
    
    # Tagged with @wip and not @slow
    >>> wip_not_slow = parse("@wip and not @slow")
    >>> wip_not_slow({"@wip", "@home"})
    True
    >>> wip_not_slow({"wet", "warm", "raining"})
    False
    
    # Tagged with both `@fast` and `@integration`
    >>> fast_integration = parse("@integration and @fast")
    >>> fast_integration({"@integration", "@fast", "@other"})
    True
    >>> fast_integration({"@system", "@fast"})
    False
    
    # Tagged with either @login or @registration
    >>> auth_pages = parse("@login or @registration")
    >>> auth_pages({"@account", "@login"})
    True
    >>> auth_pages({"@admin", "@account"})
    False
    
    

    Test Runner Usage

    A gherkin test runner (such as behave) uses tag expressions to select scenarios to run.

    # -- TAG-EXPRESSION: @one and @two
    # EXPECTED: Selects and runs scenario "Three".
    $ my_cucumber_test_runner --tags="@one and @two" features/example.feature
    ...
    
    # -- TAG-EXPRESSION: @one or @two
    # EXPECTED: Selects and runs scenarios "One", "Two" and "Three".
    $ my_cucumber_test_runner --tags="@one or @two" features/example.feature
    ...
    

    Such as using the following feature file.

    # -- FILE: features/example.feature
    Feature: Tag expressions example
    
      @one
      Scenario: One
        Given a step passes
    
      @two
      Scenario: Two
        Given another step passes
    
      @one @two
      Scenario: Three
        Given some step passes
    
      Scenario: Four
        Given another step passes