pythagora

pythagora

GPT-4驱动的自动化测试生成工具Pythagora

Pythagora是一个基于GPT-4的开源自动化测试工具,专注于生成单元测试。它能快速分析JavaScript和TypeScript代码结构,为独立函数创建全面的测试用例,提高代码覆盖率。Pythagora与Jest框架集成,通过简单的命令行操作生成测试套件。该工具目前处于alpha阶段,主要支持单元测试生成,正在探索集成测试的可能性。

Pythagora单元测试GPT-4自动化测试开源工具Github开源项目
<h1 align="center">此仓库已废弃 - 我们正在开发 <a href="https://github.com/Pythagora-io/gpt-pilot">GPT Pilot</h1> <p align=center> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://yellow-cdn.veclightyear.com/2b54e442/8923404b-fd60-418a-aa4e-6dbdeb86fde7.png"> <img height="200px" alt="Pythagora 标志" src="https://yellow-cdn.veclightyear.com/2b54e442/8923404b-fd60-418a-aa4e-6dbdeb86fde7.png"> </picture> </p> <h2 align="center">Pythagora 的使命是使自动化测试<br>🤖 完全自主 🤖</h2> <h3 align="center">只需运行一个命令,即可观看使用 GPT-4 创建的测试</h3> <br>

以下详细信息用于生成单元测试。要查看如何生成集成测试的文档,请点击这里

<br>

<img src="https://yellow-cdn.veclightyear.com/2b54e442/5fc4d028-7efe-4552-b40c-ebca171870d3.png" alt="Visual Studio Code 标志" width="24" height="24"> Visual Studio Code 扩展

如果您想使用 Visual Studio Code 扩展试用 Pythagora,可以在<a href="https://marketplace.visualstudio.com/items?itemName=PythagoraTechnologies.pythagora-vscode-extension">这里</a>下载。

🏃💨️ 快速开始

要安装 Pythagora,请运行:

npm i pythagora --save-dev

然后,添加您的 API 密钥,即可开始生成测试。之后,只需从您的仓库根目录运行以下命令:

npx pythagora --unit-tests --func <函数名>

其中 <函数名> 是您想为其生成单元测试的函数名。只需确保您的函数从文件中导出。您可以在下面的选项部分中查看其他选项,如为多个文件或文件夹生成测试。

<br><br> 如果您希望扩展当前测试套件以获得更好的代码覆盖率,可以运行:

npx pythagora --expand-unit-tests --path <您的测试套件路径>

有关扩展现有测试的更多详细信息,请参见下面的扩展现有测试部分

<br><br>

**注意:**在 Windows 上,请确保使用 Git Bash 运行所有命令,而不是使用 Power Shell 或类似工具

<br>

🎞 演示

以下是一些可以帮助您入门的演示视频。

<div align="center"> <a href="https://youtu.be/NNd08XgFFw4"><img src="https://yellow-cdn.veclightyear.com/2b54e442/b29954f7-6e40-4582-a4f2-d348d4ffed87.gif" alt="Pythagora Alpha 演示"></a> </div> <p align=center> <a target="_blank" href="https://youtu.be/NNd08XgFFw4">Pythagora 单元测试演示(2 分钟)</a> </p> <br>

🔎 示例

以下是我们分叉并使用 Pythagora 创建测试的开源仓库示例,您可以轻松看到它的实际应用。

  • Lodash

    • 📝 生成了 1604 个测试
    • 🐞 发现了 11 个错误(1 个边缘情况和 10 个 bug)
    • ⏳️ 运行时间 4 小时

    lodash pythagora 测试结果

  • node-fs-extra

    • 📝 生成了 98 个测试
    • 🐞 发现了 2 个错误
    • ⏳️ 运行时间 30 分钟

    node-fs-extra pythagora 测试结果

<br>

🔬 它是如何工作的?

当 Pythagora 生成单元测试时,它使用以下方法:

  1. 找到您想测试的函数
  2. 找到该函数内部调用的所有函数
  • 这是通过 AST(抽象语法树)解析完成的
  1. 将您想测试的函数和所有相关函数发送到 Pythagora 服务器,然后使用 GPT-4 生成单元测试
<br>

📈 扩展现有测试

如果您已经为您的代码库生成了测试,但只想提高代码覆盖率或覆盖更多边缘情况,只需运行:

npx pythagora --expand-unit-tests --path <您的测试套件路径>

运行命令时,您的测试套件路径 可以是单个测试文件的路径,也可以是文件夹的路径,该文件夹内的所有测试文件都将被处理和扩展。

就这样,尽情享受您的新代码覆盖率吧!

📖 选项

  • 要为单个函数生成单元测试,请运行:

    npx pythagora --unit-tests --func <函数名>
  • 要为特定文件中的单个函数生成单元测试,请运行:

    npx pythagora --unit-tests --func <函数名> --path ./path/to/file.js
  • 要为文件中的所有函数生成单元测试,请运行:

    npx pythagora --unit-tests --path ./path/to/file.js
  • 要为文件夹中所有文件的所有函数生成单元测试,请运行:

    npx pythagora --unit-tests --path ./path/to/folder/
<br>

⚙️ 配置

Pythagora 使用 GPT-4 生成测试,因此您需要拥有 OpenAI API 密钥或 Pythagora API 密钥。您可以在这里获取 Pythagora API 密钥或在这里获取 OpenAI API 密钥。获得密钥后,使用以下命令将其添加到 Pythagora:

npx pythagora --config --pythagora-api-key <API_密钥>

npx pythagora --config --openai-api-key <API_密钥>
<br> # ▶️ 如何运行单元测试 要运行生成的测试,只需执行 ```bash npx jest ./pythagora_tests/ ``` 或者要运行特定文件或文件夹的测试,执行 `npx jest <文件或文件夹路径>`。目前,Pythagora 仅支持生成 Jest 测试,如果您希望它生成其他框架的测试,请通过 [hi@pythagora.ai](mailto:hi@pythagora.ai) 告诉我们。 <br>

📌️ 注意事项

  • Pythagora 生成的最佳单元测试是那些独立函数(如辅助函数)。基本上,是那些实际可以进行单元测试的代码部分。例如,看看这个 Pythagora 文件 - 它包含了非常适合单元测试的辅助函数。当我们运行 npx pythagora --unit-tests --path ./src/utils/common.js 时 - 它生成了 145 个测试,其中只有 17 个失败。最令人惊奇的是,只有 6 个测试因为编写不正确而失败,其他 11 个测试发现了代码本身的 bug。您可以在这里查看这些测试。

  • 我们不会在我们的服务器上存储您的任何代码。但是,代码会被发送到 GPT,因此也会发送到 OpenAI。这是他们的隐私政策

  • 您想要为其生成测试的函数需要从文件中导出。例如,如果您有这样的文件:

    function mongoObjToJson(originalObj) { ... } module.exports = { mongoObjToJson };

    那么,要为 mongoObjToJson 函数生成单元测试,您可以运行:

    npx pythagora --unit-tests --func mongoObjToJson
<br>

🤔️ 常见问题

  • 这些测试的准确性如何?

    • Pythagora 生成的最佳单元测试是那些独立函数。基本上,是那些实际可以进行单元测试的代码部分。例如,看看这个 Pythagora 文件 - 它包含了非常适合单元测试的辅助函数。当我们运行 npx pythagora --unit-tests --path ./src/utils/common.js 时 - 它生成了 145 个测试,其中只有 17 个失败。最令人惊奇的是,只有 6 个测试因为编写不正确而失败,其他 11 个测试发现了代码本身的 bug。您可以在这里查看这些测试。
    • 以下是我们在测试 Pythagora 时的一些观察:
      1. 它在测试边缘情况方面做得很好。对于我们创建测试的许多仓库,测试通过测试边缘情况立即发现了 bug。
      2. 它最适合测试独立的辅助函数。例如,我们尝试为 Lodash 仓库生成测试,它创建了 1000 个测试,其中只有 40 个需要额外审查。对于其他非独立函数,我们计划结合集成测试的记录来生成适当的模拟,这应该扩展 Pythagora 的测试范围。
      3. 它绝对不是完美的,但它创建的测试我想保留并提交。因此,我鼓励您尝试一下,看看它对您的效果如何。如果您这样做了,请通过电子邮件Discord 告诉我们。我们非常期待听到您的体验。 <br><br>
  • 我应该审查生成的测试吗?

    • 绝对应该。如上所述,某些测试可能编写不正确,因此最好在提交之前审查所有测试。尽管如此,我认为这将为您节省大量时间,并帮助您以不同的方式思考您的代码。 <br><br>
  • 测试帮助我思考我的代码 - 我不想自动生成它们

    • 这就是 Pythagora 最好的地方 - 它确实帮助您思考代码。只是,您不需要花时间编写测试。这甚至发生在我们这些创建 Pythagora 的人身上 - 我们尽可能快地编写代码,但当我们添加单元测试生成时,我们意识到它无法为某些函数创建测试。因此,我们重构了代码,使其更加模块化,以便可以为其生成单元测试。 <br><br>
  • Pythagora 是否限于特定的编程语言或框架?

    • Pythagora 主要为 JavaScript 代码生成单元测试。但是,它设计用于处理用 JavaScript、TypeScript 和类似语言编写的代码。如果您希望看到对其他语言或框架的支持,请通过 hi@pythagora.ai 告诉我们。 <br><br>
  • Pythagora 能否也生成集成测试?

    • Pythagora 目前专注于生成单元测试。要生成集成测试,您可能需要结合集成测试的记录来生成适当的模拟。我们正在积极探索未来扩展其功能的选项。 <br><br>
  • Pythagora 是否与所有 JavaScript 测试框架兼容?

    • 目前,Pythagora 使用 Jest 测试框架生成测试。虽然我们愿意扩展与其他测试框架的兼容性,但 Jest 是目前主要支持的框架。如果您有特定的框架建议,请随时与我们分享。 <br><br>
  • Pythagora 如何处理敏感或专有代码?

    • Pythagora 不会在其服务器上存储您的代码,但它会将代码发送到 GPT 和 OpenAI 进行测试生成。如果您的代码包含敏感或专有信息,在将生成的测试提交到您的仓库之前,必须审查这些测试。在使用 Pythagora 处理敏感代码时要谨慎。 <br><br>
  • Pythagora 是否适用于所有类型的项目?

    • Pythagora 最适合结构良好的代码和独立函数(如辅助函数)的项目。它在为这些类型的代码生成测试方面表现出色。对于更复杂或非独立的函数,可能需要手动审查和修改。

🏁 Alpha 版本

这是 Pythagora 的 alpha 版本。要获得 beta 版本的更新或者<b>就您希望 Pythagora 支持的技术(框架/数据库)提出建议</b>,您可以 👉 <a href="http://eepurl.com/ikg_nT" target="_blank">在此添加您的电子邮件/评论</a> 👈 。 <br>

🔗 与我们联系

💬 加入<a href="https://discord.gg/npC5TAfj6e" target="_blank">我们的 Discord 服务器</a>参与讨论。 <br><br> 📨 通过<a href="http://eepurl.com/ikg_nT" target="_blank">在此添加您的电子邮件</a>获取新功能和 beta 版本的更新。 <br><br> 🌟 作为一个开源工具,如果您能为 Pythagora 仓库点星,我们将不胜感激 🌟 <br><br> <br><br>

<br><br>

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多