python 10个接口自动化测试提效示例

2841 篇文章 6 订阅
2767 篇文章 17 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3.4k次,点赞86次,收藏15次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

在接口自动化测试中,提高效率通常涉及减少重复代码、增加测试的可维护性和重用性,以及充分利用现有工具和框架。以下是一些关键场景及其示例代码,展示如何在Python中实现高效的接口自动化测试。为了简化,我们将使用requests库来处理HTTP请求,请确保已安装此库。

1. 使用Session对象减少请求延迟

场景: 重复使用Session对象以减少每次请求的连接时间。

import requests
def test_api_with_session():
    session = requests.Session()
    response = session.get('https://api.example.com/users')
    assert response.status_code == 200, f"Failed with status code {response.status_code}"
    # 更多请求可以使用同一个session...
# 调用示例
# test_api_with_session()
# 预期输出: 成功状态码200或错误信息

2. 参数化测试

场景: 使用参数化运行相同测试逻辑但不同的输入。

import pytest
from requests import get
@pytest.mark.parametrize("endpoint", ['/users', '/posts', '/comments'])
def test_endpoints(endpoint):
    response = get(f"https://api.example.com/{endpoint}")
    assert response.status_code == 200, f"{endpoint} failed with status {response.status_code}"
# 调用示例 (需要pytest框架)
# pytest -v test_script.py
# 预期输出: 各个endpoint的测试结果

3. 依赖注入模拟

场景: 在测试中模拟外部依赖,避免真实调用。

def test_api_with_mock(mock_get):
    mock_get.return_value.status_code = 200
    response = requests.get('https://api.example.com/users')
    assert response.status_code == 200
# 使用unittest.mock或pytest-mock进行模拟
# 示例未包含完整mock设置,仅展示思路

4. 异常处理

场景: 确保接口正确处理异常情况。

def test_error_handling():
    try:
        response = requests.get('https://api.example.com/users/99999')  # 故意请求不存在的用户
        assert response.status_code != 404, "Expected 404 for non-existent user"
    except requests.exceptions.RequestException as e:
        print(f"Request failed: {e}")
# 调用示例
# test_error_handling()
# 预期输出: 404错误或请求失败信息

5. 使用Fixture共享测试资源

场景: 利用pytest Fixtures来共享初始化和清理资源。

import pytest
@pytest.fixture
def auth_token():
    # 获取或模拟一个认证令牌
    return "mock-token"
def test_protected_api(auth_token):
    headers = {'Authorization': f'Bearer {auth_token}'}
    response = requests.get('https://api.example.com/protected', headers=headers)
    assert response.status_code == 200
# pytest -v test_script.py
# 预期输出: 成功状态码或错误信息

6. 并发测试

场景: 模拟多用户并发访问以测试接口性能。

import concurrent.futures
def concurrent_requests():
    urls = ['https://api.example.com/user/1', 'https://api.example.com/user/2']
    with concurrent.futures.ThreadPoolExecutor() as executor:
        results = list(executor.map(requests.get, urls))
        for resp in results:
            assert resp.status_code == 200, f"Failed with status {resp.status_code}"
# 调用示例
# concurrent_requests()
# 预期输出: 多个请求的成功或失败状态

7. 数据驱动测试

场景: 使用外部数据文件(如CSV、JSON)驱动测试。

import csv
import requests
def test_with_csv_data(filename):
    with open(filename, newline='') as csvfile:
        reader = csv.reader(csvfile)
        next(reader)  # Skip header
        for row in reader:
            url, expected_status = row
            response = requests.get(url)
            assert response.status_code == int(expected_status), f"{url} failed"
# 调用示例
# test_with_csv_data('testdata.csv')
# 预期输出: 每个URL的测试结果

8. 响应验证

场景: 不仅验证状态码,还验证响应体中的具体数据。

def test_response_content():
    response = requests.get('https://api.example.com/users/1')
    data = response.json()
    assert response.status_code == 200
    assert data['id'] == 1, "Incorrect user ID returned"
    # 更多验证...
# 调用示例
# test_response_content()
# 预期输出: 验证成功或失败信息

9. 基于条件的测试

场景: 根据环境变量或配置决定是否执行某些测试。

import os
def test_optional_feature():
    if os.getenv('ENABLE_FEATURE_X', 'false').lower() == 'true':
        response = requests.post('https://api.example.com/feature_x')
        assert response.status_code == 201, "Feature X failed"
# 调用示例
# 设置环境变量 ENABLE_FEATURE_X=true 后运行测试
# 预期输出: 成功或跳过测试的提示

10. 定时任务自动化

场景: 定时执行接口测试,如夜间自动回归测试。

import schedule
import time
def run_daily_tests():
    # 包含所有测试函数的调用
    test_api_with_session()
    test_endpoints()  # 假设已经定义好pytest相关函数
    # 其他测试...
schedule.every().day.at("00:00").do(run_daily_tests)  # 每天凌晨执行
while True:
    schedule.run_pending()
    time.sleep(60)  # 每分钟检查一次
# 实际部署时,此代码块应运行在一个长期运行的进程或服务器上
# 预期输出: 日志记录每天的测试结果

这些示例涵盖了接口自动化测试中提高效率和可维护性的多种策略,包括代码复用、参数化、异常处理、并发测试、数据驱动等。在实际应用中,还需要结合具体的测试框架和工具进行调整和完善。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

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

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值