zoukankan      html  css  js  c++  java
  • 接口测试-mock实例

    mock实例

    mock的用法

    1.找到你要替换的对象,这个对象可以是一个类,或者是一个函数,或者是一个类实例。
    2.然后实例化Mock类得到一个mock对象,并且设置这个mock对象的行为,比如被调用的时候返回什么值,被访问成员的时候返回什么值等。
    3.使用这个mock对象替换掉我们想替换的对象,也就是步骤1中确定的对象。
    4.之后就可以开始写测试代码,这个时候我们可以保证我们替换掉的对象在测试用例执行的过程中行为和我们预设的一样。
    
    举个状态码的实例

    1.无mock当接口所有数据准备完毕(判断状态码实例)

    import requests
    def requestr():
        r = requests.get("http://www.baidu.com") # 爬取百度网站的信息
        return r.status_code # 拿到status_code的状态码
    print(requestr()) # 200
    

    2.有mock模拟接口返回值(判断状态码实例)

    import requests
    def requestr():
        r = requests.get("http://www.baidu.com") # 爬取百度网站的信息
        return r.status_code # 拿到status_code的状态码
    print(requestr()) # 200
    import unittest
    from unittest import mock
    class TestClient(unittest.TestCase):  # 创建一个unittest类
        def test_success_request_01(self):  # 创建一条case
            self.assertEqual(requestr(), 200)  # 真实的接口断言;接口开发完,做断言,返回200表示正确
        # 接口未开发完,使用mock对象替换掉'r.status_code'的值
        def test_success_request_02(self):  # 创建一条预期与实际一致的正确case
            requestr = mock.Mock(return_value=200) # mock设为200
            self.assertEqual(requestr(), 200) # 预期与实际一致,通过
        def test_fail_request_01(self):  # 创建一条预期与实际一不致的case
            requestr = mock.Mock(return_value=404) # mock设为404
            self.assertEqual(requestr(), 200) # 实际结果是200,失败
        def test_fail_request_02(self):  # 创建一条预期与实际一致的错误case
            requestr = mock.Mock(return_value=404) # mock设为404 
            self.assertEqual(requestr(),404) # 实际结果404 通过
    if __name__ == '__main__':
        unittest.main()
    


    当接口开发完成后,我们就可以把mock数据移除掉,直接执行我们的断言了,所以有了mock数据,我们可以尽早的完成用例,介入测试
    再来举个json的实例

    3.无mock当接口所有数据准备完毕(判断json值实例)

    import requests
    def cnodejs():
        response = requests.get('https://cnodejs.org/api/v1/topics') 
        return response.json()['success']  # 取键['success']的值
    print(cnodejs())  # True
    

    4.有mock模拟接口返回值(判断json值实例)

    import requests
    import unittest
    from unittest.mock import Mock
    def cnodejs():
        response = requests.get('https://cnodejs.org/api/v1/topics') # 当这个接口没有开发完,可以先写mock用例模拟数据
        return response.json()['success']  # 取键['success']的值
    print(cnodejs()) 
    # mock数据模拟 做断言
    class MyTest(unittest.TestCase):
        # 写用例
        def test_case_01(self):
            self.assertEqual(cnodejs(), True, '通过') # 这是真实的接口断言
        def test_case_02(self):
            cnodejs = Mock(return_value=True)  # 模拟接口断言 Mock对象加() ,调用return_value返回值 模拟True 断言结果为True 结果为成功了
            self.assertEqual(cnodejs(), True, '通过了...')
        def test_case_03(self):
            cnodejs = Mock(return_value=False)  # 模拟False 断言结果为True 结果为失败了
            self.assertEqual(cnodejs(), True, '失败了...')
        def test_case_04(self):
            cnodejs = Mock(return_value={'success': True})  # 也可以Mock直接模拟success这个键值对是否等于断言结果的键值对 等于 用例通过
            self.assertEqual(cnodejs(), {'success': True}, '通过了...')
    if __name__ == '__main__':
        unittest.main()
    


  • 相关阅读:
    Redis基本数据类型与持久化
    Jpa创建筛选器自动忽略nul值进行搜索
    layui单元格换行
    form多个name相同表单处理
    layui合并单元格
    关于jpa example使用
    mui下拉菜单
    img在div中居中
    高德地图定位api使用
    【剑指offer】20.表示数值的字符串
  • 原文地址:https://www.cnblogs.com/zhangshan33/p/11988209.html
Copyright © 2011-2022 走看看