测牛学堂:软件测试进阶之接口自动化测试python封装接口对象

94 阅读1分钟

接口对象封装思想

之前接口对象并没有封装,导致代码比较冗余,耦合度也比较高,不利于我们的维护。
进行接口封装就可以解决这个问题。
接口封装的主要思想,就是分层。
如果大家还记得之前的分享,就发现接口对象和断言都是放在一起的,其实按照功能可以分为两层。
1接口对象层:根据接口api进行封装,重点是怎么调用接口。接口返回的对象,直接给测试脚本层去使用。耦合度低。
2测试脚本层:重点是测试数据和断言
总结:
1接口对象层用面向对象的思想进行封装。测试脚本层,直接借助unittest框架来实现。
2将动态变化的数据,设计到方法的参数中去,将固定不变的,直接写成方法去实现,将响应的结果作为返回值。

代码示例:

1 接口对象层的封装:

class LoginApi(object):
    @classmethod
    def login(cls,session,url,login_data):
        res = session.post(url=url,
                           data=login_data)
        return res

2 测试脚本层的封装:
代码笔记:
1 把每次测试用例都需要的获取session的方法放在setUPClass函数里
2 因为断言也可以复用,所以把断言也封装成一个函数,这里为了方便跟大家介绍,所以封装到了类的外部,实际开发中是作为一个模块单独封装引入的。

# 封装断言方法
def common_assert(self, res, msg):
    self.assertIn(msg, res.json().get('message'))


class TestLogin(unittest.TestCase):
    session = None

    @classmethod
    def setUpClass(cls) -> None:
        cls.session = requests.Session()

    # 测试 登录成功
    def test01_login(self):
        data = {"userName": "admin", "password": "a12345"}
        url = 'http://127.0.0.1:3000/api/v1/user/login'
        res = LoginApi.login(session=self.session, url=url, login_data=data)
        # 断言
        common_assert(self, res, '登录成功')