zoukankan      html  css  js  c++  java
  • 接口框架项目示例

    整体框架:

     cases.xlsx用例:

     common.read_xl的代码

    from openpyxl import load_workbook
    from settings import config
    
    
    def read_excel(file, sheet_name):
        #  通过文件得到一个工作簿,参数是文件名,如果有路径,要填绝对路径
        wb = load_workbook(file)
        # 获取sheet表格
        sheet = wb[sheet_name]
        # 得到所有的数据
        data = list(sheet.values)
        # 获取所有的标题
        titles = data[0]
        # 转为字典
        rows = [dict(zip(titles, row)) for row in data[1:]]
        return rows
    
    
    result = read_excel(file=config.case_file, sheet_name='register')

    common.read_yaml的代码

    import yaml
    from settings import config
    
    
    def read_yml(yaml_path):
        # 读取yaml文件
        with open(yaml_path, encoding='utf-8') as f:
            # 安全加载
            data = yaml.safe_load(f)
        return data

    common.logger的代码

    from loguru import logger
    from settings import config
    
    
    def get_logger(file):
        logger.add(sink=file, encoding='utf-8',
                   level='INFO')
        return logger
    
    
    log = get_logger(config.log_path)

    settings.config的代码

    # -*- coding: utf-8 -*-
    # @Time    : 2021/10/20 10:49
    # @Author  : wyatt
    # @File    : config.py
    """配置选项"""
    
    import os
    
    # 获取config.py当前文件的路径
    current_path = os.path.abspath(__file__)
    
    
    # 配置文件目录的路径
    config_dir = os.path.dirname(current_path)
    
    
    # 项目的根目录
    root_dir = os.path.dirname(config_dir)
    
    
    # 测试数据的路径 data/
    data_dir = os.path.join(root_dir, 'data')
    
    
    # 测试用例的文件路径
    case_file = os.path.join(data_dir, 'cases.xlsx')
    
    # 测试用户信息的路径
    user_path = os.path.join(data_dir, 'user.yaml')
    
    # 测试域名
    host = 'http://api.xxx.com:8766'
    
    # 日志路径
    log_path = os.path.join(root_dir, 'log/test.log')

    tests.test_register_ddt的代码

    import unittest
    import requests
    import json
    from common.read_xl import read_excel
    from settings import config
    from ddt import ddt, data
    
    # 得到测试数据
    cases = read_excel(file=config.case_file, sheet_name='register')
    
    
    @ddt
    class TestRegister(unittest.TestCase):
    
        @data(*cases)
        def test_register_1(self, info):
            """
            注册
            :return:
            """
            # 1.准备测试数据
            url = config.host + info['url']
            method = info['method']
            # 将json格式的字符串转化成字典,因为requests.request 需要字典格式
            headers = json.loads(info['headers'])
            json_data = json.loads(info['json'])
            expected = json.loads(info['expected'])
            # 2.发送接口请求,得到实际结果
            resp = requests.request(url=url, method=method, headers=headers,
                                    json=json_data)
            actual = resp.json()
            # 3.预期结果和实际结果的断言。
            self.assertEqual(expected, actual)

    run.py的代码

    import unittest
    import unittestreport
    import datetime
    
    from BeautifulReport import BeautifulReport
    """发现文件夹的地址,收集用例,discover 是需要收集的用例模块属于哪个包"""
    suite = unittest.defaultTestLoader.discover('tests')
    
    # runner = unittestreport.TestRunner(suite)
    # runner.run()
    time1 = datetime.datetime.strftime(datetime.datetime.now(), '%Y_%m_%d_%H_%M')
    br = BeautifulReport(suite)
    br.report(description='测试报告', report_dir='./report', filename=f'report_{time1}')
  • 相关阅读:
    【leetcode】Reverse Words in a String
    使用windows的远程桌面连接连接Ubuntu
    Ubuntu下快速安装php环境
    面试题之【打印1到最大的N位数】
    gnuplot安装问题(set terminal "unknown")
    java获取文件的md5值
    jQuery全选/反选checkbox
    PowerDesigner反向工程,根据Oracle数据库结构生成ER图(2014-3-25记)
    SVN服务端启动解决方案(2013-12-10 记)
    Oracle数据库DOC命令导入导出(2014-3-10记)
  • 原文地址:https://www.cnblogs.com/wsfsd/p/15436849.html
Copyright © 2011-2022 走看看