博客
关于我
python+requests+unittest执行自动化接口测试!
阅读量:796 次
发布时间:2023-03-07

本文共 4416 字,大约阅读时间需要 14 分钟。

安装必要的库

在开始编写测试脚本之前,我们需要确保已经安装了所有必要的库。以下是安装步骤:

pip install requestspip install xlrdpip install json

对于使用PyCharm的开发者来说,可以通过以下命令完成安装:

pip install requests --userpip install xlrd --userpip install json --user

Page Object Model 设计

我们将遵循Page Object Model设计理念,创建六个不同的Python包,具体实现将根据项目需求进行调整。

Base_Page 类

首先,我们在base包中创建Base_Page.py文件。

import requestsclass BasePage:    def method_post(self, url, params=None, data=None, headers=None, files=None):        return requests.post(url=url, params=params, data=data, headers=headers, files=files)        def method_get(self, url, params=None, data=None, headers=None, files=None):        return requests.get(url=url, params=params, data=data, headers=headers, files=files)        def method_put(self, url, params=None, data=None, headers=None, files=None):        return requests.put(url=url, params=params, data=data, headers=headers, files=files)        def method_delete(self, url, params=None, data=None, headers=None, files=None):        return requests.delete(url=url, params=params, data=data, headers=headers, files=files)    def requests_type(self, method, url, params=None, data=None, headers=None, files=None):        if method.lower() == 'post':            return self.method_post(url, params, data, headers, files)        elif method.lower() == 'get':            return self.method_get(url, params, data, headers, files)        elif method.lower() == 'put':            return requests.put(url=url, params=params, data=data, headers=headers, files=files)        elif method.lower() == 'delete':            return requests.delete(url=url, params=params, data=data, headers=headers, files=files)

common 类

接下来,我们在common包中创建commons.py文件。

import loggingimport timeimport xlrd# 定义日志存储路径和HTML报告存储路径log_path = r'D:\PycharmProjects\自动化接口测试\report\logs'report_html = r'D:\PycharmProjects\自动化接口测试\report\html'class Common:    # 封装日志方法    def get_logs(self, path=log_path):        import logging        logs = logging.getLogger()        logs.setLevel(logging.DEBUG)        # 生成日志文件路径        path = f'{path}/{time.strftime("%Y-%m-%d-%H-%M-%S")}.log'        write_file = logging.FileHandler(path, 'a+', encoding='utf-8')        write_file.setLevel(logging.DEBUG)        # 设置日志格式        set_logs = logging.Formatter('%(asctime)s - %(filename)s - %(funcName)s - %(levelname)s - %(message)s')        write_file.setFormatter(set_logs)        # 添加到PyCharm的控制台        pycharm_text = logging.StreamHandler()        pycharm_text.setFormatter(set_logs)        logs.addHandler(write_file)        logs.addHandler(pycharm_text)        return logs    # 封装读取Excel表格方法    def ReadExcelTypeDict(self, file_name, path=read_xlrd):        path = f'{path}/{file_name}'        import xlrd        work_book = xlrd.open_workbook(path)        sheets = work_book.sheet_names()        DatasList = []        for sheet in sheets:            sheets = work_book.sheet_by_name(sheet)            nrows = sheets.nrows            for i in range(nrows):                values = sheets.row_values(i)                DatasList.append(values)        title_list = DatasList[0]        content_list = DatasList[1:]        new_list = []        for content in content_list:            dic = {}            for i in range(len(content)):                dic[title_list[i]] = content[i]            new_list.append(dic)        return new_list

测试用例

在case包中创建test_login.py文件。

import unittestfrom ddt import ddtfrom 自动化接口测试.base.Base_Page import BasePagefrom 自动化接口测试.common.commons import Commonclass TestLogin(unittest.TestCase):    @classmethod    def setUpClass(cls):        cls.logs = Common().get_logs()        cls.logs.debug('开始写入接口自动化测试用例')    @classmethod    def tearDownClass(cls):        cls.logs.debug('自动化接口用例结束')    def setUp(self):        self.logs.debug('开始本条接口用例')    def tearDown(self):        self.logs.debug('结束本条用例')    @ddt.data(*r)    def test_logins(self, pars):        import json        dic = json.loads(pars['body参数值'])        url = pars['接口地址']        yuqi = pars['预期结果']        fs = pars['请求方式']        result = BasePage().requests_type(method=fs, url=url, data=dic)        self.assertEqual(result.text, yuqi)

测试执行

在主模块中执行测试用例,并生成测试报告。

if __name__ == '__main__':    loader = unittest.TestLoader().loadTestsFromTestCase(TestLogin)    suite = unittest.TestSuite([loader])    Common().GetHtmlResult(suite, '登录测试用例')

注意事项

  • 将Excel文件路径更换为实际路径。
  • 调试每一步请求,确保接口正确性。
  • 根据实际项目需求调整包结构和类名称。
  • 希望以上内容能对您有所帮助!如果需要进一步的修改或优化,请随时告诉我!

    转载地址:http://cgofk.baihongyu.com/

    你可能感兴趣的文章
    Python基础——面向对象
    查看>>
    Python基础——线程锁
    查看>>
    python基础——线程与进程
    查看>>
    Python基础——构造方法和特殊成员方法
    查看>>
    Python基础——多线程值从Thread类继承
    查看>>
    Python基础——多线程之信号量
    查看>>
    Python基础——_thread多线程
    查看>>
    Python基础——Thread类与线程对象
    查看>>
    Python基础——Thread创建管理多线程
    查看>>
    Python基础——SQLite数据库基本操作
    查看>>
    Python基础——MySQL数据库基本操作
    查看>>
    Python基础_列表 list
    查看>>
    python系列【仅供参考】:python异步库调用gevent和asyncio对比
    查看>>
    python基础3
    查看>>
    Python基础08 面向对象的基本概念
    查看>>
    python系列【仅供参考】:python二进制转10进制
    查看>>
    Python基础-函数篇
    查看>>
    python基础---->常用模块
    查看>>
    Python基础(2):控制结构
    查看>>
    Python基础 | 关于“循环”那些事
    查看>>