Question

I'm using cucumber to generate test scripts that can be executed by a tool or human... so not the standard use.

However I would like to pass through the scenario and example names through to my output.

Is this possible?

Was it helpful?

Solution

Found it.. (with some help from Tim Walker)

Before do |scenario|
 puts "Before Scenario: #{scenario.to_sexp[2]}"
 .
 .
 .
end

Your SExpression may differ, so it's worth doing a scenario.to_sexp.inspect to see what that tree is.

Aslak is keen to avoid exposing properties on his classes (which is a decision I happen to agree with, so I'm happy to do this work around).

OTHER TIPS

A more serious answer (or at least, suggestion): make use of ruby's reflection to try to find what you are looking for. Grab likely objects, find out what methods they have, and see if you can find it. For example:

File.open('happy_hunting.log','a') { |f|
    f.print "Scenario supports: #{(scenario.methods - Object.methods).inspect}\n"
    }

and then repeat it to figure out whats where.

Another suggestion, look at the source.

I did something scrappy. As I use this info for only debugging, this will work for now, until I find something better.

@Before
public void printTestInfoBeforeScenario(Scenario scenario) {
    LOGGER.info("Upcoming Test: "+scenario.getSourceTagNames());
}

@After
public void printTestInfoAfterScenario(Scenario scenario) {
    LOGGER.info("Test Complete: " + scenario.getSourceTagNames() + " Status: " + scenario.getStatus());
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top