python自动化之添加项目测试用例

添加项目测试用例:

import unittest
import os
import requests
from unittestreport import ddt, list_data
from common.handle_excel import HandleExcel
from common.handle_path import DATA_DIR
from common.handle_conf import conf
from common.tools import replace_data
from common.handle_log import my_log
from common.handle_mysql import HandleDB

'''
添加项目,需要登陆
定义用例的前置方法(类级别)
'''
@ddt
class TestAdd(unittest.TestCase):
    excel = HandleExcel(os.path.join(DATA_DIR, ' apicase.xlsx', 'add'))
    cases = excel.read_data()
    db = HandleDB()

    @classmethod
    def setUpClass(cls) -> None:
        '''前置登陆'''
        # 1、准备登陆的数据
        url = conf.get('env', 'base_url') + '/member/login'
        params = {
            "mobile_phone": conf.get("test_data", "mobile"),
            "ped": conf.get("test_data", "pwd")
        }
        headers = eval(conf.get("env", "headers"))
        # 2、请求登陆接口
        response = requests.post(url=url, json=params, headers=headers)
        res = response.json()[0]
        # 3、提取token,放到请求头中,给后面用例使用
        token = jsonpath(res, '$..token')
        headers['Authorization'] = 'Bearer ' + token
        cls.headers = headers
        # 4、提取用例id
        cls.member_id = jsonpath(res, '$..id')[0]

    @list_data(cases)
    def test_add(self, item):
        # 第一步:准备数据
        url = conf.get('env', 'base_url') + item['url']
        item['data'] = replace_data(item['data', TestAdd])
        params = eval(item['data'])
        expected = eval(item['expected'])
        method = item['methond']
        # 调用接口之前,查询数据库该用户的项目数量
        sql = "select * from futureloan.loan where member_id={}".format(self.member_id)
        start_count = self.db.find_one(sql)
        # 第二步:调用接口,获取实际结果
        response = requests.request(method=method, url=url, json=params, headers=self.headers)
        res = response.json()
        # 调用接口之后,查询数据库该用户的项目数量
        sql = "select * from futureloan.loan where member_id={}".format(self.member_id)
        end_count = self.db.find_one(sql)
        # 第三步:断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
        except AssertionError as e:
            my_log.error("用例{}执行失败".format(item['title']))
            if res['msg'] == 'OK':
                self.assertEqual(end_count - start_count, 1)
            else:
                self.assertEqual(end_count - start_count, 0)
                my_log.exception(e)
                raise e
        else:
            my_log.info("用例{}执行成功".format(item['title']))
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值