Python3+Requests+Excel完整接口自动化测试框架的实现

yizhihongxing

我来为您详细讲解“Python3+Requests+Excel完整接口自动化测试框架的实现”的完整实例教程。

简介

在当前的软件开发过程中,接口测试不可或缺。为了提升测试效率和测试质量,我们需要使用接口自动化测试框架来进行测试,提高测试的可重复性和可维护性。这里我们将结合Python3+Requests+Excel来实现一个完整的接口自动化测试框架。

工具说明

  • Python3:一个流行的编程语言,拥有丰富的第三方库,适合作为接口自动化测试工具使用。
  • Requests库:Python中的一个HTTP库,提供了一系列操作HTTP的方法,以便我们发送请求和读取响应。
  • Excel:目前大多测试人员或开发人员均能熟练使用Excel,其表格功能可以帮助我们整理数据。

流程

我们将通过以下步骤,完成一个基于Python3+Requests+Excel的接口自动化测试框架:
1. 定义测试用例:将需要进行测试的接口数据存储在Excel中作为测试用例。
2. 获取测试数据:使用Python操作Excel库,读取测试用例数据并存储到Python的数据结构中,如List或Dict。
3. 发送请求:使用Requests库发送HTTP请求,获取服务器的响应。
4. 解析响应:将响应数据解析为Python的数据类型,如JSON等。
5. 断言响应:使用Python的断言机制,验证响应是否符合预期。
6. 输出测试结果:将测试结果存储回Excel中。

详细步骤

1.定义测试用例

首先,我们需要在Excel中定义测试用例。测试用例包括每个接口的请求参数、请求方式、响应结果、状态码等。测试用例的数据结构可以参考以下样例:

接口名称 请求方式 请求URL 请求头 请求参数 预期状态码 预期响应
login post http://localhost:8080/login {"Content-Type": "application/json"} {"username": "testuser", "password": "testpassword"} 200 {"code": 0, "message": "login success"}

2.获取测试数据

在Python中,我们可以使用pandas库来读取和操作Excel文件。首先,我们需要使用以下命令来安装pandas库:

pip install pandas

接下来,我们可以使用以下代码来读取Excel文件:

import pandas as pd

data = pd.read_excel('testcases.xlsx', sheet_name='Sheet1')

其中,'testcases.xlsx'是Excel文件的名称,'Sheet1'是Excel文件中的sheet名称。

读取后的数据结构类似于:

   接口名称 请求方式                   请求URL                   请求头                    请求参数  预期状态码                           预期响应
0   login   POST  http://localhost:8080/login  {'Content-Type': 'application/json'}  {'username': 'testuser', 'password': 'testpassword'}      200  {'code': 0, 'message': 'login success'}
1     ...    ...                          ...                          ...                                      ...      ...                                   ...  

3.发送请求

使用Requests库可以发送HTTP请求。我们可以使用以下代码来发送请求:

import requests

response = requests.post(url=url, headers=headers, json=data)

其中,'url'是请求的URL地址,'headers'是请求头,'data'是请求参数的数据。如果是GET请求,则可以使用以下代码:

response = requests.get(url=url, headers=headers, params=params)

其中,'params'是请求参数,以字典形式传入。

4.解析响应

使用Requests库响应的数据类型是Response对象,我们需要将响应数据解析为Python的数据类型,如JSON等。可以使用以下代码来解析响应:

import json

response_data = json.loads(response.text)

5.断言响应

使用Python的断言机制来验证响应数据是否符合预期。对于接口的响应,可以根据业务场景来自定义断言规则。以JSON格式的响应为例,可以使用以下代码来断言:

assert response_data['code'] == 0
assert response_data['message'] == 'success'

6.输出测试结果

最后,将测试结果输出到Excel文件中。我们可以使用以下代码来将测试结果写回Excel文件中:

data['实际状态码'] = status_code_list
data['实际响应'] = response_list

writer = pd.ExcelWriter('testcases.xlsx')
data.to_excel(writer, 'Sheet1', index=False)
writer.save()

其中,'status_code_list'和'response_list'分别表示接口的实际状态码和实际响应数据的列表,需要先在前面获取到。将它们再赋值到DataFrame中,并将DataFrame重新写回Excel文件中,以便查看测试结果。

示例说明

这里给出两个示例说明,以帮助理解之前的步骤。

示例一:基于Python3+Requests+Excel实现的接口自动化测试框架

import pandas as pd
import requests
import json

def test_interface(row):
    url = row['请求URL']
    headers = json.loads(row['请求头'])
    request_data = json.loads(row['请求参数'])
    method = row['请求方式']
    expected_status_code = row['预期状态码']
    expected_response = row['预期响应']

    if method == 'GET':
        response = requests.get(url, headers=headers, params=request_data)
    else:
        response = requests.post(url, headers=headers, json=request_data)

    response_data = json.loads(response.text)

    try:
        assert response.status_code == expected_status_code
        assert response_data == expected_response

        status_code_list.append(response.status_code)
        response_list.append(response_data)
    except AssertionError as e:
        print('用例编号:%d,接口名称:%s,测试不通过' % (row.name, row['接口名称']))
        print('抛出异常:%s' % str(e))
        print('预期状态码:%d,实际状态码:%d' % (expected_status_code, response.status_code))
        print('预期响应:%s,实际响应:%s' % (json.dumps(expected_response, indent=2), json.dumps(response_data, indent=2)))

        status_code_list.append(response.status_code)
        response_list.append(response_data)

if __name__ == '__main__':
    data = pd.read_excel('testcases.xlsx', sheet_name='Sheet1')

    status_code_list = []
    response_list = []

    data.apply(test_interface, axis=1)

    data['实际状态码'] = status_code_list
    data['实际响应'] = response_list

    writer = pd.ExcelWriter('testcases.xlsx')
    data.to_excel(writer, 'Sheet1', index=False)
    writer.save()

示例二:使用unittest结合Python3+Requests+Excel实现的接口自动化测试框架

import unittest
import requests
import json
import pandas as pd

class TestInterface(unittest.TestCase):
    # class level setup
    @classmethod
    def setUpClass(cls):
        cls.data = pd.read_excel('testcases.xlsx', sheet_name='Sheet1')
        cls.status_code_list = []
        cls.response_list = []

    # class level teardown
    @classmethod
    def tearDownClass(cls):
        cls.data['实际状态码'] = cls.status_code_list
        cls.data['实际响应'] = cls.response_list

        writer = pd.ExcelWriter('testcases.xlsx')
        cls.data.to_excel(writer, 'Sheet1', index=False)
        writer.save()

    def test_interface(self):
        row = self.data.iloc[self.index]
        url = row['请求URL']
        headers = json.loads(row['请求头'])
        request_data = json.loads(row['请求参数'])
        method = row['请求方式']
        expected_status_code = row['预期状态码']
        expected_response = row['预期响应']

        if method == 'GET':
            response = self.session.get(url, headers=headers, params=request_data)
        else:
            response = self.session.post(url, headers=headers, json=request_data)

        response_data = json.loads(response.text)

        try:
            self.assertEqual(response.status_code, expected_status_code)
            self.assertEqual(response_data, expected_response)

            self.status_code_list.append(response.status_code)
            self.response_list.append(response_data)
        except AssertionError as e:
            print('用例编号:%d,接口名称:%s,测试不通过' % (row.name, row['接口名称']))
            print('抛出异常:%s' % str(e))
            print('预期状态码:%d,实际状态码:%d' % (expected_status_code, response.status_code))
            print('预期响应:%s,实际响应:%s' % (json.dumps(expected_response, indent=2), json.dumps(response_data, indent=2)))

            self.status_code_list.append(response.status_code)
            self.response_list.append(response_data)

if __name__ == '__main__':
    unittest.main()

以上便是基于Python3+Requests+Excel实现的接口自动化测试框架的详细实例教程。通过学习这份框架,相信您能更好地用Python来进行接口自动化测试。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3+Requests+Excel完整接口自动化测试框架的实现 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • python实现按日期归档文件

    这里给您详细讲解一下Python实现按日期归档文件的完整攻略。 1. 确定归档的基准时间 要进行按日期归档,首先需要确定归档的基准时间。在该基准时间之前的文件将被整理到过去的日期文件夹中,而在基准时间之后的文件则会被整理到当前日期文件夹中。可以将基准时间设置为程序运行的当天日期,也可以根据需求设置其他时间。这里以程序运行当天为基准时间进行代码实现。 impo…

    python 2023年6月2日
    00
  • python循环语句的使用方法

    下面就为你详细讲解 “Python循环语句的使用方法”。 1. 循环语句概述 循环语句(Loop statement)是编程中常用的控制语句之一,通常用来重复执行一段代码。在 Python 中,常用的循环语句有 for 和 while。 2. for 循环语句 for 循环语句是遍历一个可迭代对象中的每个元素,如列表、元组、字符串等。通常用于循环次数已知的情…

    python 2023年5月30日
    00
  • python实现不同数据库间数据同步功能

    Python实现不同数据库间数据同步功能 在实际应用中,我们经常需要将不同数据库之间的数据进行同步。例如,我们可能需要将MySQL数据库中的同步到DB数据库中,或者将Oracle数据库中的数据同步到PostgreSQL数据库中。在本文中,我们将详细讲解如何Python实现不同数据库间数据同步功能,并提供两个示例来说明数据同步的实现过程。 数据库间数据同步的现…

    python 2023年5月14日
    00
  • NumPy数组中的复制和查看

    当我们在NumPy中操作数组时,复制和查看是常见的操作。但是,虽然看起来这两个操作非常相似,实际上它们在实现上的差别很大。在这里,我们将详细地讨论NumPy中的复制和查看。 复制 在NumPy中,复制一个数组有两种方式:浅复制和深复制。 浅复制 浅复制是指创建一个新的数组对象,但并不对数组中的数据进行复制。这意味着,新的数组与原始数组共享相同的数据。在浅复制…

    python-answer 2023年3月25日
    00
  • python爬虫将js转化成json实现示例

    关于“python爬虫将js转化成json实现示例”的完整攻略,可以从以下步骤开始: 步骤1:爬取包含javascript代码的页面 首先,需要使用requests库向包含javascript代码的页面发起请求,并获取页面的html代码。接下来,需要使用BeautifulSoup库(或其它解析库)解析html代码,找到包含需要转化的javascript代码的…

    python 2023年6月3日
    00
  • python密码学文件解密实现教程

    Python密码学文件解密实现教程 简介 本教程旨在介绍使用Python解密文件的基本原理和方法,主要采用密码学的相关知识和工具库来实现解密功能。在本教程中,我们将讲解AES算法的使用方法,并且提供两个示例,分别是解密AES加密过的明文和密文。 步骤 步骤一:安装Cryptodome库 Cryptodome是Python的一个密码学工具库,我们将使用这个库来…

    python 2023年5月20日
    00
  • Python使用itchat模块实现简单的微信控制电脑功能示例

    Python使用itchat模块实现简单的微信控制电脑功能示例 itchat 是一个 Python 的微信个人号接口,可以用于实现微信个人号的自动化操作。以下是使用 itchat 模块实现简单的微信控制电脑功能示例的详细攻略。 1. 安装 itchat 模块 首先,我们需要安装 itchat 模块。可以使用以下命令来安装: pip install itcha…

    python 2023年5月15日
    00
  • Python文件打开方式实例详解【a、a+、r+、w+区别】

    Python文件打开方式实例详解【a、a+、r+、w+区别】 在 Python 中,打开文件有多种方式,这些方式都是通过内置函数 open() 来实现的。open() 函数支持的文件打开模式有多种,其中包括 a、a+、r+ 和 w+ 四种常用的模式。这篇文章主要介绍这四种模式的区别和使用方法。 a 模式 以追加模式写入文件,如果文件不存在则创建文件。 实例 …

    python 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部