1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
Feature: Setup logging_level
As a tester
I want to configure the logging_level for --logcapture mode
So that I see only the important log-records when a scenario fails.
As a tester
I want to configure the logging_level for --nologcapture mode
So that I see only the important log-records up to this level.
. SPECIFICATION:
. * logging_level can be defined on command-line
. * logging_level can be defined in behave configuration file
. * logging_level should be applied in before_all() hook in --nologcapture mode
@setup
Scenario: Feature Setup
Given a new working directory
And a file named "features/steps/use_behave4cmd_steps.py" with:
"""
import behave4cmd0.log.steps
import behave4cmd0.failing_steps
import behave4cmd0.passing_steps
"""
And a file named "features/environment.py" with:
"""
def before_all(context):
context.config.setup_logging()
"""
And a file named "features/example.log_with_failure.feature" with:
"""
Feature:
Scenario: S1
Given I create log records with:
| category | level | message |
| root | ERROR | Hello1 log-error-record |
| root | WARN | Hello1 log-warn-record |
| root | INFO | Hello1 log-info-record |
| root | DEBUG | Hello1 log-debug-record |
When a step fails
"""
And a file named "features/example.log_with_pass.feature" with:
"""
Feature:
Scenario: S2
Given I create log records with:
| category | level | message |
| root | ERROR | Hello2 log-error-record |
| root | WARN | Hello2 log-warn-record |
| root | INFO | Hello2 log-info-record |
| root | DEBUG | Hello2 log-debug-record |
When a step passes
"""
@capture
Scenario: Logcapture mode: Use logging_level on command-line
Also ensure that command-line option can override configuration file info.
Given a file named "behave.ini" with:
"""
[behave]
logging_level = INFO
"""
When I run "behave -f plain -T --logging-level=WARN features/"
Then it should fail with:
"""
1 scenario passed, 1 failed, 0 skipped
3 steps passed, 1 failed, 0 skipped, 0 undefined
"""
And the command output should contain:
"""
Captured logging:
ERROR:root:Hello1 log-error-record
WARNING:root:Hello1 log-warn-record
"""
But the command output should not contain the following log records:
| category | level | message | Comment |
| root | INFO | Hello1 log-info-record | Log-level too low |
| root | DEBUG | Hello1 log-debug-record | Log-level too low |
| root | ERROR | Hello2 log-error-record | Scenario passes, capture log is suppressed |
| root | WARN | Hello2 log-warn-record | Scenario passes, capture log is suppressed |
| root | INFO | Hello2 log-info-record | Scenario passes, capture log is suppressed |
| root | DEBUG | Hello2 log-debug-record | Scenario passes, capture log is suppressed |
@capture
Scenario: Logcapture mode: Use logging_level in configuration file
Given a file named "behave.ini" with:
"""
[behave]
logging_level = ERROR
"""
When I run "behave -f plain -T features/"
Then it should fail with:
"""
1 scenario passed, 1 failed, 0 skipped
3 steps passed, 1 failed, 0 skipped, 0 undefined
"""
And the command output should contain:
"""
Captured logging:
ERROR:root:Hello1 log-error-record
"""
But the command output should not contain the following log records:
| category | level | message | Comment |
| root | WARN | Hello1 log-warn-record | Log-level too low |
| root | INFO | Hello1 log-info-record | Log-level too low |
| root | DEBUG | Hello1 log-debug-record | Log-level too low |
| root | ERROR | Hello2 log-error-record | Scenario passes |
| root | WARN | Hello2 log-warn-record | Scenario passes |
| root | INFO | Hello2 log-info-record | Scenario passes |
| root | DEBUG | Hello2 log-debug-record | Scenario passes |
@no_capture
Scenario: Normal mode: Use logging_level on command-line
Given a file named "behave.ini" with:
"""
[behave]
logging_level = INFO
"""
When I run "behave -f plain -T --logging-level=WARN --no-logcapture features/"
Then it should fail with:
"""
1 scenario passed, 1 failed, 0 skipped
3 steps passed, 1 failed, 0 skipped, 0 undefined
"""
And the command output should contain the following log records:
| category | level | message |
| root | ERROR | Hello1 log-error-record |
| root | WARN | Hello1 log-warn-record |
| root | ERROR | Hello2 log-error-record |
| root | WARN | Hello2 log-warn-record |
But the command output should not contain the following log records:
| category | level | message | Comment |
| root | INFO | Hello1 log-info-record | Log-level too low |
| root | DEBUG | Hello1 log-debug-record | Same reason |
| root | INFO | Hello2 log-info-record | Same reason |
| root | DEBUG | Hello2 log-debug-record | Same reason |
@no_capture
Scenario: Normal mode: Use logging_level in configuration file
Given a file named "behave.ini" with:
"""
[behave]
log_capture = false
logging_level = ERROR
"""
When I run "behave -f plain -T features/"
Then it should fail with:
"""
1 scenario passed, 1 failed, 0 skipped
3 steps passed, 1 failed, 0 skipped, 0 undefined
"""
And the command output should contain the following log records:
| category | level | message |
| root | ERROR | Hello1 log-error-record |
| root | ERROR | Hello2 log-error-record |
But the command output should not contain the following log records:
| category | level | message | Comment |
| root | WARN | Hello1 log-warn-record | Log-level too low |
| root | INFO | Hello1 log-info-record | Same reason |
| root | DEBUG | Hello1 log-debug-record | Same reason |
| root | WARN | Hello2 log-warn-record | Same reason |
| root | INFO | Hello2 log-info-record | Same reason |
| root | DEBUG | Hello2 log-debug-record | Same reason |
|