def test_call_send_request_with_right_arguments(self):
     # 检测调用send_request的时候的参数是str
     client.send_request = mock.Mock()
     client.visit_ustack()
     self.assertEqual(client.send_request.called, True)
     call_args = client.send_request.call_args
     self.assertIsInstance(call_args[0][0], str)
Example #2
0
 def test_success_request_with_patch(self):
     status_code = '200'
     success_send = mock.Mock(return_value=status_code)
     # 使用了patch函数(作为上下文管理器使用)。
     with mock.patch('client.send_request', success_send):
         from client import visit_ustack
         self.assertEqual(visit_ustack(), status_code)
Example #3
0
 def test_patch_func2(self):
     status_code = '404'
     fail_send = Mock(return_value=status_code)
     import client
     with patch.object(client, 'send_request', fail_send):
         from client import visit_ustack
         self.assertEqual(visit_ustack(), status_code)
 def test_success_request(self):
     print 'start test_success_request'
     # 声明mock函数
     success_send = mock.Mock(return_value='200')
     # 假设client的send_request得到的回值就是success_send
     client.send_request = success_send
     # 调用被测试函数
     self.assertAlmostEqual(client.visit_ustack(), '200')
Example #5
0
 def test_success_request(self):
     success_send = mock.Mock(return_value='200')
     # 实例化Mock类得到一个mock对象,并且设置这个mock对象的行为。
     # 在成功测试中,我们设置mock对象的返回值为字符串“200”,
     # 在失败测试中,我们设置mock对象的返回值为字符串"404"。
     client.send_request = success_send
     # 用这个mock对象替换掉我们想替换的对象, client.send_request
     self.assertEqual(client.visit_ustack(), '200')
Example #6
0
 def test_call_send_request_with_right_arguments(self):
     """
     Mock对象的called属性表示该mock对象是否被调用过。
     
     Mock对象的call_args表示该mock对象被调用的tuple,tuple的每个成员都是一个mock.call对象。mock.call这个对象代表了一次对mock
     对象的调用,其内容是一个tuple,含有两个元素,第一个元素是调用mock对象时的位置参数(*args),第二个元素是调用mock对象时的关键字
     参数(**kwargs)。
     
     现在来分析下上面的用例,我们要检查的项目有两个:
     
     visit_ustack()调用了send_request()
     
     调用的参数是一个字符串
     
     :return: 
     """
     client.send_request = mock.Mock()
     client.visit_ustack()
     self.assertEqual(client.send_request.called, True)
     call_args = client.send_request.call_args
     self.assertIsInstance(call_args[0][0], str)
Example #7
0
 def test_fail_request(self):
     fail_send = mock.Mock(return_value='404')
     client.send_request = fail_send
     self.assertEqual(client.visit_ustack(), '404')
Example #8
0
 def test_call_send_request_with_right_arguments(self):
     client.send_request = mock.Mock()
     client.visit_ustack()
     self.assertEqual(client.send_request.called, True)
     call_args = client.send_request.call_args
     self.assertIsInstance(call_args[0][0], str)
Example #9
0
 def test_success_request(self):
     status_code = '200'
     from client import visit_ustack
     self.assertEqual(visit_ustack(), status_code)
Example #10
0
 def test_patch_func(self):
     status_code = '404'
     fail_send = Mock(return_value=status_code)
     with patch('client.send_request', fail_send):
         self.assertEqual(visit_ustack(), status_code)
Example #11
0
 def test_success_request(self):
     status_code = 200
     success_send = mock.Mock(return_value=status_code)
     with mock.patch('client.send_request', success_send): # 这里解设导入的 client 模块,里面有一个 send_request 函数
         from client import visit_ustack # 这里解设导入的 client 模块,里面有一个 visit_ustack 函数
         self.assertEqual(visit_ustack(), status_code)
Example #12
0
 def test_fail_request_with_patch(self):
     status_code = '404'
     fail_send = mock.Mock(return_value=status_code)
     with mock.patch('client.send_request', fail_send):
         from client import visit_ustack
         self.assertEqual(visit_ustack(), status_code)
Example #13
0
 def test_fail_request(self):
     fail_send = mock.Mock(return_value='404')
     client.send_request = fail_send
     self.assertEqual(client.visit_ustack(), '404')
Example #14
0
 def test_success_request(self):
     success_send = mock.Mock(return_value='200')
     client.send_request = success_send
     self.assertEqual(client.visit_ustack(), '200')
Example #15
0
 def test_success_request(self):
     success_send = mock.Mock(return_value='200')
     client.send_request = success_send
     self.assertEqual(client.visit_ustack(), '200')
Example #16
0
 def test_fail_request_with_patch_obj(self):
     status_code = '404'
     fail_send = mock.Mock(return_value=status_code)
     with mock.patch.object(client, 'send_request', fail_send):
         from client import visit_ustack
         self.assertEqual(visit_ustack(), status_code)
Example #17
0
    上面的 return_value 参数用法,也许你看不出有什么用,下面例子会让你明白它的真正用处。
    举个例子来说:我们有一个简单的客户端实现,用来访问一个URL,当访问正常时,需要返回状态码200,不正常时,需要返回状态码404。
    首先,我们的客户端代码实现如下:

        import requests

        class Client():

            def send_request(self, url):
                r = requests.get(url)
                return r.status_code

            def visit_ustack(self):
                return self.send_request('http://www.ustack.com')

    外部模块调用 visit_ustack() 来访问 UnitedStack 的官网。
    下面我们使用 mock 对象在单元测试中分别测试访问正常和访问不正常的情况。

        import unittest
        import mock

        class TestClient(unittest.TestCase):

            def test_success_request(self):
                success_send = mock.Mock(return_value=200)
                clent = Client() # 需导入上面说的 客户端代码 里面的 Client
                clent.send_request = success_send
                self.assertEqual(clent.visit_ustack(), 200)

            def test_fail_request(self):
                fail_send = mock.Mock(return_value=404)
 def test_fail_request(self):
     print 'start test_fail_request'
     faile_send = mock.Mock(return_value='404')
     client.send_request = faile_send
     self.assertAlmostEqual(client.visit_ustack(), '404')
Example #19
0
 def test_fail_request(self):
     status_code = 404
     fail_send = mock.Mock(return_value=status_code)
     with mock.patch.object(client, 'send_request', fail_send):
         from client import visit_ustack
         self.assertEqual(visit_ustack(), status_code)
Example #20
0
 def test_success_request(self):
     status_code = '200'
     success_send = Mock(return_value=status_code)
     with patch('client.send_request', success_send):
         from client import visit_ustack
         self.assertEqual(visit_ustack(), status_code)