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

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

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

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

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

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

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

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

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

import xlwtbook = 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

完整代码

import requestsimport xlwtimport xlrdimport unittestclass 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 casesdef 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 requestspip install xlwt

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

import requestsimport xlwtimport unittestclass 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 xlrddef 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 请求方法和数据格式,适用于各种接口自动化测试场景。


如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

END配套学习资源分享

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

全套资料获取方式:

猜你喜欢

转载自blog.csdn.net/IT_LanTian/article/details/131230223