1.登录接口封装(接口封装)
如果一个用例的代码太多,我们可以通过封装函数或者类解决。以充值接口为例,具体方法:
登录可以作为前置夹具,setUp,setUpClass;
登录可以被多个测试类试用,重复试用,可以封装起来(函数 或者 类和对象);
类和对象(类可以继承,对象可以访问类属性)。
优化前,充值接口的自动化测试脚本详见博客:项目实战-充值接口_Ly_LittleStar的博客-CSDN博客
优化后,登录接口封装成类,可以继承,base.py:
import requests
from setting.config import host
class ApiCase:
"""访问项目接口需要用到的独立的方法或者属性"""
@classmethod
def login(cls):
"""访问登录接口"""
url = host + '/member/login'
method = 'post'
headers = {"X-Lemonban-Media-Type": "lemonban.v2"}
data = {"mobile_phone": "xxxxxxxxxxxxx", "pwd": "12345678"}
login_resp = requests.request(method=method, url=url, headers=headers, json=data).json()
# 获取 member_id和token
cls.member_id = str(login_resp['data']['id'])
cls.token = login_resp['data']['token_info']['token']
return cls.member_id, cls.token
def add(self):
"""访问添加项目的接口"""
pass
def audit(self):
"""审核项目的接口"""
pass
充值接口继承类ApiCase,对象可以直接访问类属性:
import unittest
import requests
import json
from common.excel import read_excel
from ddt import ddt, data
from setting.config import config_file, host
from tests.base import ApiCase
# 得到测试数据
excel_data = read_excel(file=config_file, sheet_name='recharge')
@ddt
class TestRecharge(unittest.TestCase, ApiCase):
@classmethod
def setUpClass(cls) -> None:
'''测试用例需要的前置夹具,每个测试类只执行一次的前置
1.登录
2.获取充值接口需要的member_id和token
'''
# 调用login方法 1.导入ApiCase,ApiCase.login()
# 第一种方法
cls.member_id, cls.token = ApiCase.login()
# 第二种方法
# ApiCase.login()
# cls.member_id = ApiCase.member_id
# cls.token = ApiCase.token
# 第三种,TestRecharge继承ApiCase,cls.login(),对象可以获取类属性
cls.login()
@data(*excel_data)
def test_recharge_01(self, info):
url = host + info['url']
json_data &