Skip to content

Commit 9cb5f2f

Browse files
authored
Merge pull request #205 from nrccua-bradb/add_slack_message_prefix
Add message prefix support
2 parents 441781d + 32d435e commit 9cb5f2f

2 files changed

Lines changed: 50 additions & 0 deletions

File tree

pytest_slack/plugin.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,14 @@ def pytest_addoption(parser):
4444
help='Set the reporter name'
4545
)
4646

47+
group.addoption(
48+
'--slack_message_prefix',
49+
action='store',
50+
dest='slack_message_prefix',
51+
default=None,
52+
help='Set a prefix to come before the test result counts.'
53+
)
54+
4755
group.addoption(
4856
'--slack_timeout',
4957
action='store',
@@ -106,6 +114,7 @@ def pytest_terminal_summary(terminalreporter, exitstatus, config):
106114
slack_hook = config.option.slack_hook
107115
channel = config.option.slack_channel
108116
ssl_verify = config.option.ssl_verify
117+
message_prefix = config.option.slack_message_prefix
109118

110119
slack_username = config.option.slack_username if config.option.slack_username else 'Regression testing results'
111120

@@ -122,6 +131,8 @@ def pytest_terminal_summary(terminalreporter, exitstatus, config):
122131
passed, failed, skipped, error, xfailed, xpassed)
123132
if report_link:
124133
final_results = '<%s|%s>' % (report_link, final_results)
134+
if message_prefix:
135+
final_results = '%s: %s' % (message_prefix, final_results)
125136

126137
results_pattern = {
127138
"color": color,

tests/test_plugin.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,45 @@ def test_pass():
107107
assert emoji == slack_hook_icon_emoji
108108

109109

110+
@pytest.mark.parametrize('expected_prefix,report_link', [
111+
("Test Prefix", None),
112+
("Test Prefix", "http://report_link.com")
113+
])
114+
def test_pytest_slack_message_prefix(testdir, expected_prefix, report_link):
115+
"""Make sure that message prefix works."""
116+
117+
testdir.makepyfile(
118+
"""
119+
import pytest
120+
def test_pass():
121+
assert 1 == 1
122+
"""
123+
)
124+
125+
slack_hook_host = 'http://test.com/any_hash'
126+
slack_hook_channel = 'test'
127+
run_args = [
128+
'--slack_channel', slack_hook_channel,
129+
'--slack_hook', slack_hook_host,
130+
'--slack_message_prefix', expected_prefix
131+
]
132+
if report_link:
133+
run_args.extend(['--slack_report_link', report_link])
134+
135+
expected_text = 'Passed=1 Failed=0 Skipped=0 Error=0 XFailed=0 XPassed=0'
136+
if report_link:
137+
expected_text = '<%s|%s>' % (report_link, expected_text)
138+
expected_text = '%s: %s' % (expected_prefix, expected_text)
139+
140+
with mock.patch('requests.post') as mock_post:
141+
testdir.runpytest(*run_args)
142+
143+
called_data = json.loads(mock_post.call_args[1]['data'])
144+
text = called_data['attachments'][0]['text']
145+
146+
assert text == expected_text
147+
148+
110149
@pytest.mark.parametrize('test_input,expected_emoji', [
111150
('1 == 1', ':sunny:'),
112151
('2 == 1', ':rain_cloud:'),

0 commit comments

Comments
 (0)