2

Python 2.7では、この機能があります

from slacker import Slacker


def post_message(token, channel, message):
    channel = '#{}'.format(channel)

    slack = Slacker(token)
    slack.chat.post_message(channel, message)

モックとパッチで、トークンがSlackerクラスで使用されていることを確認できます

import unittest
from mock import patch

from slacker_cli import post_message


class TestMessage(unittest.TestCase):

    @patch('slacker_cli.Slacker')
    def test_post_message_use_token(self, mock_slacker):
        token = 'aaa'
        channel = 'channel_name'
        message = 'message string'

        post_message(token, channel, message)

        mock_slacker.assert_called_with(token)

post_message で使用されている文字列を確認するにはどうすればよいですか?

私は試してみます

mock_slacker.chat.post_message.assert_called_with('#channel_name') 

しかし、私は得る

AssertionError: Expected call: post_message('#channel_name')
Not called
4

1 に答える 1

3

通話が行われている場所を特定する必要があります。コードは次のとおりです。

slack.chat.post_message

したがって、slackモック化されたクラスのインスタンスと同様に、そのインスタンスについて話していることを確認するためSlackerに使用する必要があります。return_value

mock_slacker.return_value.chat.post_message.assert_called_with

パッチを適用'slacker_cli.Slacker'したのでmock_slacker、パッチを適用したクラスです。呼び出し自体は、そのパッチが適用されたクラスのインスタンスで行われています。クラスを呼び出すとインスタンスが返されるため、return_value.

于 2014-08-25T17:25:23.503 に答える