Python使用requests+excel进行接口自动化测试!

1123 篇文章 45 订阅
865 篇文章 3 订阅

在当今的互联网时代中,接口自动化测试越来越成为软件测试的重要组成部分。Python是一种简单易学,高效且可扩展的语言,自然而然地成为了开发人员的首选开发语言。而requests和xlwt这两个常用的Python标准库,能够帮助我们轻松地开发接口自动化测试,更快更好地完成测试工作。

下面是这两个库在接口自动化测试中可带来的好处:

1. requests可以方便地模拟发送HTTP请求,实现接口测试,支持GET、POST、PUT、DELETE等请求方式。使用requests,我们可以轻松实现对接口的请求及返回结果的处理。

import requests
response = requests.get('http://example.com')

2. requests提供了对HTTP头的复杂处理和特定认证方案的支持,包括Basic,Digest,OAuth等。这意味着我们可以轻松地实现接口的授权认证。

import requests
response = requests.get('http://example.com', auth=('user', 'pass'))

3. requests支持Cookie和Session的处理,可以用来保证用户的身份认证或后续请求的连续性。这对于需要进行多次调用接口的测试非常有用。

4. xlwt库支持将测试结果以Excel格式将结果输出或记录。接口自动化测试有的时候需要输出测试报告,xlwt可以方便地将测试结果输出为Excel表格。

import xlwt
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1')
sheet.write(0, 0, '接口名称')
sheet.write(0, 1, '测试结果')
sheet.write(1, 0, 'test API')
sheet.write(1, 1, 'Pass')
book.save('result.xls')

5. xlwt库为测试结果提供格式化的输出,用户可以自定义表格样式以及表格内容的格式、字体、颜色、边框等,以便用户快速理解接口测试结果,对其做出有效的应对。

综上所述,requests和xlwt是Python的两个基础库,它们能够方便地完成接口自动化测试,并且大大提高测试的效率和精度。因此,如果您还没有使用它们进行接口自动化测试,不妨试试看以下的接口自动化测试框架DEMO。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

完整代码

import requests
import xlwt
import xlrd
import unittest
class BaseTestCase(unittest.TestCase):
    url = ""  # 接口请求的 URL
    method = "GET"  # 接口请求的方法
    data = {}  # 接口请求的数据
    headers = {}  # 接口请求的头部
    expected_code = 200  # 预期的 HTTP 状态码
    expected_result = {}  # 预期的响应结果
    def setUp(self):
        """每个测试方法执行前调用"""
        pass
    def tearDown(self):
        """每个测试方法执行后调用"""
        pass
    def run_case(self, case):
        """动态创建的测试方法,执行测试用例"""
        self.url = case['url']
        self.method = case['method']
        self.data = case['data']
        self.headers = case.get('headers', {})
        self.expected_code = case.get('expected_code', 200)
        self.expected_result = case.get('expected_result', {})
        self.test_api()
    def test_api(self):
        """测试用例实现"""
        response = requests.request(self.method, url=self.url, headers=self.headers, data=self.data)
        self.assertEqual(response.status_code, self.expected_code)  # 断言响应的 HTTP 状态码是否与预期一致
        self.assertDictEqual(response.json(), self.expected_result)  # 断言响应的结果是否与预期一致
def read_excel(file_path, sheet_name):
    workbook = xlrd.open_workbook(file_path)  # 打开 Excel 文件
    sheet = workbook.sheet_by_name(sheet_name)  # 获取 Excel 工作表
    rows = sheet.nrows  # 获取行数
    cases = []
    for i in range(1, rows):  # 从第 2 行开始读取测试用例
        case = {}
        case['url'] = sheet.cell_value(i, 0)  # 读取接口请求的 URL
        case['method'] = sheet.cell_value(i, 1)  # 读取接口请求的方法
        case['data'] = sheet.cell_value(i, 2)  # 读取接口请求的数据
        case['headers'] = sheet.cell_value(i, 3)  # 读取接口请求的头部
        case['expected_code'] = int(sheet.cell_value(i, 4))  # 读取预期的 HTTP 状态码
        case['expected_result'] = eval(sheet.cell_value(i, 5))  # 读取预期的响应结果
        case['name'] = sheet.cell_value(i, 6)  # 读取用例名称
        cases.append(case)
    return cases
def write_excel(file_path, sheet_name, cases):
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet(sheet_name)
    sheet.write(0, 0, '用例编号')
    sheet.write(0, 1, '用例名称')
    sheet.write(0, 2, '测试结果')
    for i, case in enumerate(cases):
        sheet.write(i+1, 0, i+1)
        sheet.write(i+1, 1, case.get('name', '') or case['url'])
        sheet.write(i+1, 2, '通过' if case.get('result') else '失败')
    workbook.save(file_path)
if __name__ == '__main__':
    cases = read_excel('cases.xlsx', 'Sheet1')  # 读取测试用例
    suite = unittest.TestSuite()  # 创建测试套件
    for case in cases:
        case_name = case.get('name', '') or case['url']
        setattr(BaseTestCase, 'test_{}'.format(case_name), lambda self, case=case: self.run_case(case))
        # 动态创建测试方法,并将测试用例绑定到测试方法上
    unittest.TextTestRunner().run(suite)  # 执行测试套件
    write_excel('report.xls', 'Sheet1', cases)  # 写入测试结果报告

下面详细介绍一下⬆️上方代码

1. 安装所需要的库和依赖项

pip install requests
pip install xlwt

2. 编写接口自动化测试基类及测试用例实现

import requests
import xlwt
import unittest
class BaseTestCase(unittest.TestCase):
    url = ""  # 接口请求的 URL
    method = "GET"  # 接口请求的方法
    data = {}  # 接口请求的数据
    headers = {}  # 接口请求的头部
    expected_code = 200  # 预期的 HTTP 状态码
    expected_result = {}  # 预期的响应结果
    def setUp(self):
        """每个测试方法执行前调用"""
        pass  # 可以进行一些初始化工作
    def tearDown(self):
        """每个测试方法执行后调用"""
        pass  # 可以进行一些清理工作
    def test_api(self):
        """测试用例实现"""
        response = requests.request(self.method, url=self.url, headers=self.headers, data=self.data)
        self.assertEqual(response.status_code, self.expected_code)  # 断言响应的 HTTP 状态码是否与预期一致
        self.assertDictEqual(response.json(), self.expected_result)  # 断言响应的结果是否与预期一致

3. 编写 Excel 文件读取和解析函数

import xlrd
def read_excel(file_path, sheet_name):
    workbook = xlrd.open_workbook(file_path)  # 打开 Excel 文件
    sheet = workbook.sheet_by_name(sheet_name)  # 获取 Excel 工作表
    rows = sheet.nrows  # 获取行数
    cases = []
    for i in range(1, rows):  # 从第 2 行开始读取测试用例
        case = {}
        case['url'] = sheet.cell_value(i, 0)  # 读取接口请求的 URL
        case['method'] = sheet.cell_value(i, 1)  # 读取接口请求的方法
        case['data'] = sheet.cell_value(i, 2)  # 读取接口请求的数据
        case['headers'] = sheet.cell_value(i, 3)  # 读取接口请求的头部
        case['expected_code'] = int(sheet.cell_value(i, 4))  # 读取预期的 HTTP 状态码
        case['expected_result'] = eval(sheet.cell_value(i, 5))  # 读取预期的响应结果
        cases.append(case)
    return cases

4. 编写 Excel 结果报告写入函数

def write_excel(file_path, sheet_name, cases):
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet(sheet_name)
    sheet.write(0, 0, '用例编号')
    sheet.write(0, 1, '用例名称')
    sheet.write(0, 2, '测试结果')
    for i, case in enumerate(cases):
        sheet.write(i+1, 0, i+1)
        sheet.write(i+1, 1, case.get('name', ''))
        sheet.write(i+1, 2, '通过' if case.get('result') else '失败')
    workbook.save(file_path)

5. 编写主函数

if __name__ == '__main__':
    cases = read_excel('cases.xlsx', 'Sheet1')  # 读取测试用例
    suite = unittest.TestSuite()  # 创建测试套件
    for case in cases:
        case_name = case.get('name', '') or case['url']
        setattr(BaseTestCase, 'test_{}'.format(case_name), lambda self, case=case: self.run_case(case))
        # 动态创建测试方法,并将测试用例绑定到测试方法上
    unittest.TextTestRunner().run(suite)  # 执行测试套件
    write_excel('report.xls', 'Sheet1', cases)  # 写入测试结果报告

这是一个简单的Python接口自动化测试项目,可以通过Excel 文件管理测试用例,支持多种 HTTP 请求方法和数据格式,适用于各种接口自动化测试场景。

读到这了,希望能够“分享并转发文章”让更多同学知道。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种广泛使用的编程语言,因其易学易用、灵活性和可扩展性而备受欢迎。requestsPython的一个库,它提供了一种简单且易于使用的方式来发送HTTP请求。pytestPython的另一个库,它提供了一种用于编写和运行测试的框架。allure是一个测试报告生成工具,可以为测试结果提供美观和易读的报告。 在接口自动化测试中,可以使用Pythonrequests库来发送HTTP请求,并使用pytest框架来编写和运行测试。可以使用Excel来存储测试数据、预期结果和实际结果。使用allure工具可以生成美观的测试报告。 以下是使用Python requestspytest和allure进行接口自动化测试的一般步骤: 1. 安装Pythonrequestspytest和allure 2. 创建一个Excel文件,输入测试数据、预期结果和实际结果 3. 创建一个pytest测试文件,并使用requests库发送HTTP请求,比较预期结果和实际结果 4. 在pytest测试文件中添加allure装饰器,以便生成测试报告 5. 运行pytest测试文件并生成allure测试报告 例如,以下是一个使用Python requestspytest和allure进行接口自动化测试的示例代码: ```python import requests import pytest import allure import openpyxl @allure.title("测试接口") @pytest.mark.parametrize("test_input, expected", [(1, "success"), (2, "fail")]) def test_api(test_input, expected): # 从Excel文件中获取测试数据和预期结果 wb = openpyxl.load_workbook("testdata.xlsx") sheet = wb.active test_data = sheet.cell(row=test_input, column=1).value expected_result = sheet.cell(row=test_input, column=2).value # 发送HTTP请求 response = requests.get("http://example.com/api", params=test_data) actual_result = response.text # 比较预期结果和实际结果 assert actual_result == expected_result, f"预期结果:{expected_result},实际结果:{actual_result}" # 添加allure描述 allure.attach("请求参数", str(test_data)) allure.attach("预期结果", str(expected_result)) allure.attach("实际结果", str(actual_result)) ``` 在上面的代码中,使用pytest的parametrize装饰器来传递测试数据和预期结果。使用openpyxl库从Excel文件中获取测试数据和预期结果。使用requests库发送HTTP请求并比较预期结果和实际结果。使用allure的装饰器来添加测试描述。最后,运行pytest测试文件并生成allure测试报告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值