Project Icon

pythagora

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

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

此仓库已废弃 - 我们正在开发 GPT Pilot

Pythagora 标志

Pythagora 的使命是使自动化测试
🤖 完全自主 🤖

只需运行一个命令,即可观看使用 GPT-4 创建的测试


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


Visual Studio Code 标志 Visual Studio Code 扩展

如果您想使用 Visual Studio Code 扩展试用 Pythagora,可以在这里下载。

🏃💨️ 快速开始

要安装 Pythagora,请运行:

npm i pythagora --save-dev

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

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

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



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

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

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



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


🎞 演示

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

Pythagora Alpha 演示

Pythagora 单元测试演示(2 分钟)


🔎 示例

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

  • Lodash

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

    lodash pythagora 测试结果

  • node-fs-extra

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

    node-fs-extra pythagora 测试结果


🔬 它是如何工作的?

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

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

📈 扩展现有测试

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

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/
    

⚙️ 配置

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_密钥>

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

📌️ 注意事项

  • 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
    

🤔️ 常见问题

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

    • 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 告诉我们。我们非常期待听到您的体验。

  • 我应该审查生成的测试吗?

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

  • 测试帮助我思考我的代码 - 我不想自动生成它们

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

  • Pythagora 是否限于特定的编程语言或框架?

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

  • Pythagora 能否也生成集成测试?

    • Pythagora 目前专注于生成单元测试。要生成集成测试,您可能需要结合集成测试的记录来生成适当的模拟。我们正在积极探索未来扩展其功能的选项。

  • Pythagora 是否与所有 JavaScript 测试框架兼容?

    • 目前,Pythagora 使用 Jest 测试框架生成测试。虽然我们愿意扩展与其他测试框架的兼容性,但 Jest 是目前主要支持的框架。如果您有特定的框架建议,请随时与我们分享。

  • Pythagora 如何处理敏感或专有代码?

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

  • Pythagora 是否适用于所有类型的项目?

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

🏁 Alpha 版本

这是 Pythagora 的 alpha 版本。要获得 beta 版本的更新或者就您希望 Pythagora 支持的技术(框架/数据库)提出建议,您可以 👉 在此添加您的电子邮件/评论 👈 。

🔗 与我们联系

💬 加入我们的 Discord 服务器参与讨论。

📨 通过在此添加您的电子邮件获取新功能和 beta 版本的更新。

🌟 作为一个开源工具,如果您能为 Pythagora 仓库点星,我们将不胜感激 🌟





项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号