在Visual Studio Code中使用pytest进行AWS Lambda函数测试的最佳实践

亿牛云.png

背景/引言

在现代软件开发中,自动化测试已经成为保证代码质量的重要一环。对于AWS Lambda函数开发者来说,使用pytest进行单元测试和集成测试是一个高效且可靠的方法。本文将介绍在Visual Studio Code中使用pytest测试AWS Lambda函数的最佳实践,涵盖项目结构、依赖管理、pytest配置以及实际代码示例。

正文
项目结构

一个清晰合理的项目结构有助于代码的维护和测试。建议使用以下项目结构:

project/
├── src/
│   ├── lambda_function.py
│   └── requirements.txt
├── tests/
│   ├── test_lambda_function.py
│   └── requirements.txt
└── .vscode/└── settings.json
  • src/ 目录包含您的Lambda函数代码及其依赖。
  • tests/ 目录包含您的测试代码及其依赖。
  • .vscode/ 目录包含Visual Studio Code的配置文件。
依赖管理

src/requirements.txttests/requirements.txt中分别列出源代码和测试代码所需的依赖项。例如:

src/requirements.txt:

boto3
requests

tests/requirements.txt:

pytest
mock
PYTHONPATH设置

为了确保测试代码能够正确引用源代码,需要在Visual Studio Code的设置中配置PYTHONPATH。在.vscode/settings.json中添加以下内容:

{"terminal.integrated.env.windows": {"PYTHONPATH": "${workspaceFolder}/src;${workspaceFolder}/tests"},"terminal.integrated.env.linux": {"PYTHONPATH": "${workspaceFolder}/src;${workspaceFolder}/tests"},"terminal.integrated.env.osx": {"PYTHONPATH": "${workspaceFolder}/src;${workspaceFolder}/tests"},"python.testing.pytestArgs": ["tests"],"python.testing.unittestEnabled": false,"python.testing.nosetestsEnabled": false,"python.testing.pytestEnabled": true
}
pytest配置

.vscode/settings.json文件中,我们已经配置了pytest参数,指定了测试目录和运行测试的命令。这样,您可以直接在Visual Studio Code中运行pytest测试。

实例

下面是一个简单的AWS Lambda函数及其测试示例。Lambda函数从某个API获取数据并返回。为了模拟API请求,我们使用了爬虫代理IP技术。

src/lambda_function.py:

import requestsdef lambda_handler(event, context):# 使用亿牛云爬虫代理加强版 设置代理IPproxies = {"http": "http://username:password@proxy.16yun.cn:1234","https": "http://username:password@proxy.16yun.cn:1234",}response = requests.get("https://api.example.com/data", proxies=proxies)return response.json()

tests/test_lambda_function.py:

import pytest
from unittest.mock import patch
from src.lambda_function import lambda_handler@patch('src.lambda_function.requests.get')
def test_lambda_handler(mock_get):# 模拟API响应mock_get.return_value.json.return_value = {"key": "value"}# 调用lambda_handler函数result = lambda_handler(None, None)# 验证结果assert result == {"key": "value"}mock_get.assert_called_once_with("https://api.example.com/data", proxies={"http": "http://username:password@proxy.16yun.cn:1234","https": "http://username:password@proxy.16yun.cn:1234",})
结论

本文介绍了在Visual Studio Code中使用pytest进行AWS Lambda函数测试的最佳实践。通过合理的项目结构、正确的依赖管理和PYTHONPATH设置,可以轻松实现Lambda函数的测试自动化。希望本文能为您的AWS Lambda开发工作提供有益的参考和帮助。
以上实例展示了如何在代码中使用爬虫代理IP技术,并通过mock模块模拟外部API请求,使测试过程更加可靠和可控。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/26206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RESTful API最佳实践:Python构建指南

目录 一、引言 二、RESTful API设计原则 三、Python构建RESTful API的技术栈 四、Flask构建RESTful API实践 安装Flask 定义路由和资源 处理HTTP方法 错误处理 数据验证和序列化 使用Flask扩展 五、最佳实践案例 七、结论 一、引言 在当今的软件开发领域&#…

SpringBoot 项目创建和 IDEA 常见问题

1、 Cannot save Files 问题(无法自动保存项目文件) Cannot save ....../HelloWord.java. Unable to create a backup file (HelloWord.java~). The file left unchanged. 原因:DIEA无法在保存前备份文件 解决办法:找到 Files --> Settings... -->…

谁是最会写作文的AI“考生”?“阅卷老师”ChatGPT直呼惊艳!

文章推荐 粽叶飘香,端午安康!AI视频送祝福啦~ AI日报|文生语音大模型国内外均有突破,Pika完成6亿新融资,视频大模型也不远了! ⭐️搜索“可信AI进展“关注公众号,获取当日最新AI资讯 一年一…

Claude3 注册及升级教程(包含封号解决方法)

前言 最近大家呼声很高的 Claude3 ,它的 注册以及升级 教程来了!!! (还有封号情况的解决方式放在了后面) 废话不多说,直接进入教程。 Claude 3 注册 前期准备工作 一个国外的邮箱账号&#…

HarmonyOS Next 系列之HTTP请求封装和Token持久化存储(四)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现(一) HarmonyOS Next 系列之验证码输入组件实现(二) HarmonyOS Next 系列之底部标签栏TabBar实现(三) HarmonyOS Next 系列之HTTP请求封装和Token…

windows上修改Podman的镜像配置源加速

目录 前言解决办法1. 打开window的Powershell 2. 修改registries.conf3. 重启podman即可 扩展内容1. 国内镜像源地址2. 阿里加速地址 前言 今天在电脑上准备通过podman安装mysql,结果执行安装命令后,网络不通没法下载镜像。 解决办法 将默认镜像源修改…

释放创意潜力:AI写作助手如何助力内容创作?

内容为王,在内容创作的世界中尤为重要。然而,面对写作时常常感到无从下手:有时缺乏灵感,有时难以表达清楚自己的想法。AI写作助手的出现,为这些问题提供了创新的解决方案,极大地改变了内容创作的过程。 今…

C++: shared_ptr是线程安全的吗

导读 C面试中有时会有这样一个问题,shared_ptr是线程安全的吗?对此问题,我们需要从三个并发场景进行考虑,拷贝shared_ptr的安全性、对shared_ptr赋值的安全性和读写shared_ptr指向内存区域的安全性。 对于以上问题,首…

奥特曼28亿「投资帝国」曝光!不要OpenAI股份,当CEO最不赚钱

Sam Altman十几年来建立的庞大投资帝国,让我们终于理解了他为什么可以不要OpenAI的股权。 内容提要 作为一家曾经的小型非盈利组织,OpenAI以创纪录的速度迅速成长为估值860亿美元的独角兽。 虽然这大多归功于Sam Altman和微软达成的商业合作&#xff…

超强 BAAS 神器:支持自动生成API、对象存储、静态托管,云函数!

想象一下,你是一名开发者,你有一种强大的神器,可以让你摆脱繁琐的服务搭建和接口开发,免费使用众多第三方认证服务、对象存储、云函数和静态部署。这就是MemFire Cloud! MemFire Cloud是懒人开发者的福音,一…

开源VisualFbeditor中文版,vb7 IDE,VB6升级64位跨平台开发安卓APP,Linux程序

吴涛老矣,社区苦无64位易语言,用注入DLL增强菜单,做成VS一样的界面 终归是治标不治本,一来会报毒,二来闭源20年没更新了 开源的VB7,欢迎易语言的铁粉进群:1032313876 【Freebasic编程语言】编绎…

Transformer论文解读

目录 写在前面 一、Transformer要解决的问题 1.长距离依赖问题 2.序列处理瓶颈 二、整体结构 三、自注意力机制 1.Scaled Dot-Product Attention 2.Multi-Head Attention 四、Position-wise Feed-Forward Networks(FFN) 五、位置编码 六、总结…

数组双指针经典习题

合并两个有序数组 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int p1m-1,p2n-1;int p3nums1.length-1;while(p1>0&&p2>0){//放完一个数组if(nums1[p1]>nums2[p2]){nums1[p3--]nums1[p1];p1--;}else{nums1[p3--]nums2[p2];p…

iOS调整collectionViewCell顺序

效果图 原理 就是设置collectionView调整顺序的代理方法,这里要注意一点 调整过代理方法之后,一定要修改数据源,否则导致错乱。 还有就是在collectionView上面添加一个长按手势,在长按手势的不同阶段,调用collectionV…

第18篇 Intel FPGA Monitor Program的使用<一>

Q:Intel FPGA Monitor Program开发工具可以支持Terasic的FPGA开发板使用吗? A:Intel FPGA Monitor Program 是Intel提供的适用于 ARM* Cortex*-A9 处理器和 Nios II 处理器的完整软件开发环境,它包括编译工具以及完整的调试功能&…

全国电力变压器数据

全国共10330个电力变压器 属性部分并不是很全,比如说一次电压,二次电压只有200条是全的 不过以我做电力采集时的经验,其实变压器的数量和位置是最难采集的数据,反而电压、电流、功率这些专业数据可以直接找设备台账补充或利用移动…

log4j日志打印导致OOM问题

一、背景 某天压测,QPS压到一定值后机器就开始重启,出现OOM,好在线上机器配置了启动参数-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/**/**heapdump.hprof。将dump文件下载到本地,打开Java sdk bin目录下的jvisualvm工具&a…

35、matlab设置字体、查看工具包版本、窗口默认布局和程序发布

1、matlab设置字体 1)找到预设并点击预设 2)设置流程:字体——>自定义——>编辑器——>选择字体及格式——>确定 如图序号所示 2、matlab查看工具包版本:ver命令 1)命令行窗口输入命令 即可查看工具包…

如何使用前端表格控件实现数据更新?

前言 小编之前分享过一篇文章叫《如何使用前端表格控件实现多数据源整合?》。今天,继续为大家介绍如何使用前端表格控件来更新已连接的数据源信息。 环境准备 SpreadJS在线表格编辑器: SpreadJS 前端表格控件新版本新增了一款报表插件&am…

Python altair库:轻松打造高颜值数据可视化图表

更多Python学习内容:ipengtao.com Altair是一个基于Vega和Vega-Lite构建的Python数据可视化库。它提供了一个简单且直观的API,能够生成具有交互性的统计图表。Altair的设计理念是通过声明式的语法定义图表,从而简化了复杂图表的创建过程。本文…