Skip to content

Commit 51ae9f0

Browse files
authored
Merge pull request #237 from polaMikhail/master
Add slack test name option
2 parents 41f7412 + 817b987 commit 51ae9f0

2 files changed

Lines changed: 48 additions & 1 deletion

File tree

pytest_messenger/slack.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ def add_slack_options(parser):
2626
default=None,
2727
help='Used for reporting to slack'
2828
)
29+
group.addoption(
30+
'--slack_test_name',
31+
action='store',
32+
dest='slack_test_name',
33+
default=None,
34+
help='Used for adding test name to the final report'
35+
)
2936

3037
group.addoption(
3138
'--slack_report_link',
@@ -104,6 +111,7 @@ def slack_send_message(test_result, config, exitstatus):
104111
timeout = config.option.slack_timeout
105112
report_link = config.option.slack_report_link
106113
only_failed = config.option.only_failed
114+
slack_test_name = config.option.slack_test_name
107115
slack_hook = config.option.slack_hook
108116
channel = config.option.slack_channel
109117
ssl_verify = config.option.ssl_verify
@@ -133,10 +141,13 @@ def slack_send_message(test_result, config, exitstatus):
133141
test_result.error,
134142
test_result.xfailed,
135143
test_result.xpassed)
144+
if slack_test_name:
145+
final_results = 'Test=%s ' % (slack_test_name) + final_results
136146
if report_link:
137147
final_results = '<%s|%s>' % (report_link, final_results)
138148
if message_prefix:
139149
final_results = '%s: %s' % (message_prefix, final_results)
150+
140151
results_pattern = {
141152
"color": color,
142153
"text": final_results,

tests/test_slack.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ def test_pass():
106106
assert color == '#56a64f'
107107
assert emoji == slack_hook_icon_emoji
108108

109-
110109
@pytest.mark.parametrize('expected_prefix,report_link', [
111110
("Test Prefix", None),
112111
("Test Prefix", "http://report_link.com")
@@ -145,6 +144,43 @@ def test_pass():
145144

146145
assert text == expected_text
147146

147+
@pytest.mark.parametrize('expected_test_name,report_link', [
148+
("test_name", None),
149+
("test_name", "http://report_link.com")
150+
])
151+
def test_pytest_messenger_slack_message_test_name(testdir, expected_test_name, report_link):
152+
"""Make sure that message test_name works."""
153+
154+
testdir.makepyfile(
155+
"""
156+
import pytest
157+
def test_pass():
158+
assert 1 == 1
159+
"""
160+
)
161+
162+
slack_hook_host = 'http://test.com/any_hash'
163+
slack_hook_channel = 'test'
164+
run_args = [
165+
'--slack_channel', slack_hook_channel,
166+
'--slack_hook', slack_hook_host,
167+
'--slack_test_name', expected_test_name
168+
]
169+
if report_link:
170+
run_args.extend(['--slack_report_link', report_link])
171+
172+
expected_text = 'Test=test_name Passed=1 Failed=0 Skipped=0 Error=0 XFailed=0 XPassed=0'
173+
if report_link:
174+
expected_text = '<%s|%s>' % (report_link, expected_text)
175+
176+
with mock.patch('requests.post') as mock_post:
177+
testdir.runpytest(*run_args)
178+
179+
called_data = json.loads(mock_post.call_args[1]['data'])
180+
text = called_data['attachments'][0]['text']
181+
182+
assert text == expected_text
183+
148184

149185
@pytest.mark.parametrize('test_input,expected_emoji', [
150186
('1 == 1', ':sunny:'),

0 commit comments

Comments
 (0)