Java 测试自动化
一个关于 Java 测试自动化框架、工具、库和软件的综合精心整理的列表,帮助软件工程师在 Java 上轻松启动测试自动化。由 SDCLabs 赞助。
如果有问题/想法/疑问,可以加入这里的聊天讨论: https://gitter.im/atinfo/awesome-test-automation
目录
- xUnit 框架
- TDD / ATDD / BDD
- 模型驱动测试 (Model-Based Testing)
- 代码分析与覆盖率
- Web UI 测试自动化
- 移动端测试自动化
- API 测试自动化
- Windows UI 测试自动化
- Unix / Linux UI 测试自动化
- MacOS UI 测试自动化
- 服务器端测试自动化
- 虚拟环境
- 性能 / 压力 / 负载测试
- 安全检测
- 构建工具
- 持续集成
- 报告
- 文档生成
- 编辑器、IDE 和控制台
- ORM 框架和库
- 有用的库
- 测试数据
- 数据库测试自动化
xUnit 框架
- JUnit
常用的 Java 测试框架。 - TestNG
测试框架。 - Test Data Supplier
TestNGDataProvider
的包装器,可以以更灵活的方式提供测试数据。 - Sunshine
基于 Java 的 xUnit 测试运行器(例如 TestNG、JUnit …)的封装。它可以自动在 JAR 文件中查找带有测试的类,传递给所需的测试运行器并报告执行状态。
TDD / ATDD / BDD
工具
- JBehave
一款行为驱动开发(BDD)框架。BDD 是测试驱动开发(TDD)和验收测试驱动设计(ATDD)的演进,旨在让初学者和专家都能更轻松直观地使用这些实践。 - Cucumber-JVM
Cucumber 的纯 Java 实现,支持大多数 JVM 上的主流编程语言。 - JGiven
针对 Java 的开发者友好且务实的 BDD 工具。开发者可以使用流式、特定领域的 API(DSL)在纯 Java 中编写场景,JGiven 会生成易于领域专家阅读的报告。 - easyb
针对 Java 平台的 BDD 框架。通过使用基于规范的领域特定语言(DSL),easyb 旨在实现可执行但又可读的文档。 - Robot Framework
一款通用的测试自动化框架,用于验收测试和验收测试驱动开发(ATDD)。 - awesome-robotframework
一个关于 Robot Framework 资源和库的精选列表。 - Spectrum
针对 Java 8 的 BDD 风格测试运行器,灵感来自 Jasmine、RSpec 和 Cucumber。 - Gauge
轻量级、跨平台的测试自动化工具,可用业务语言编写测试用例。 - Spock
基于 Java 和 Groovy 的规格化(Specification)测试框架。 - Concordion
灵活且可扩展的 BDD/SBE 工具,使用业务语言创建美观的“活文档”。
扩展
- cucumber-report-db
将 Cucumber-JVM 的 BDD 测试结果存储在数据库中,并提供报表功能。
模型驱动测试 (Model-Based Testing)
- GraphWalker
一款模型驱动测试框架。该工具可读取多种格式(graphml、dot、json)的模型,并从中生成测试。
代码分析和覆盖率
- SonarQube
开源项目,用于管理代码质量。 - Gradle Quality Plugin
用于 Java 和 Groovy 项目的静态代码分析插件,集成了 Checkstyle、PMD、FindBugs 和 CodeNarc。插件实现了统一的控制台输出,大大简化了开发者的工作流程,让违规检查的体验类似编译错误。 - Qulice
Java 项目的静态分析质量控制工具。它结合了最好的静态分析工具并对它们进行预配置,因此无需单独使用或配置各个工具。 - JaCoCo
免费的 Java 代码覆盖率库,由 EclEmma 团队创建,基于多年对已有库的使用和集成经验。
Web UI 测试自动化
库
- Selenium
可移植的 Web 应用测试框架。 - SikuliX
能自动化任何你在桌面屏幕上看到的东西,支持 Windows、Mac 或部分 Linux/Unix。它使用基于 OpenCV 的图像识别来识别并控制 GUI 组件。在无法轻松访问 GUI 内部或应用/网页源代码的情况下,非常有用。
框架和封装
- Selenide
基于 Selenium 的简洁 API,可编写稳定且可读的 UI 测试。 - Selenified
一个开源框架,简化 Selenium 测试。为 Selenium 调用提供包装,以便详细报告、错误处理、简化测试环境配置(线程安全),并可本地或云端(Grid 或 SauceLabs)运行。 - Serenity BDD (Thucydides)
创新的开源库,用于编写更高效的自动化验收测试,并使用这些测试生成产品和项目的丰富文档和报告。 - htmlelements
一个 Java 框架,以易用的方式在测试中与网页元素交互。 - atlassian-selenium
开源(BSD)项目,旨在简化在 Selenium/WebDriver 中开发功能性测试。 - stevia
Persado 提供的开源 QA 自动化测试框架。 - darcy
一个开源的 Java 8 框架,使用声明式、与自动化库无关的 DSL 将用户界面建模为页面对象。 - Satisfy
基于 Thucydides + JBehave 的开源 Java 框架,开箱即用地支持 WebUI、SOAP、REST、电子邮件、文件及随机数据生成等。 - JDI Light
UI 测试自动化框架,帮助编写快速、可持续的测试,并提供清晰、可预测的测试运行结果。 - Geb Framework
一个 Groovy 测试自动化框架,适配 WebDriver 的页面对象模式,并结合 Spock 进行 BDD。 - FluentLenium
为 Selenium 提供了一个流畅的 Java 接口,使 UI 功能性测试可读性更强,也更可重用、可靠和稳健。 - Selion
基于 TestNG 和 Selenium 构建,提供一组能力,让你能快速开始使用 WebDriver。可用于测试 Web 和移动端应用。 - Frameworkium
一个可用于 Web、App 和 API 测试的自动化框架。集成了 saucelabs、allure、rest-assured、jackson、gson。可通过 Jitpack 获取。 - Carina
基于 Java 的测试自动化框架,统一了所有测试层:移动应用(Web、原生、混合)、Web 应用、REST 服务、数据库。 - NoraUi
NoraUi(NOn-Regression Automation for User Interfaces)是一个基于 Selenium、Cucumber、Gherkin 的 Java 框架,可创建 GUI 测试项目,并能轻松集成到 CI 流程中。 - Cubano
一个用 Java 编写的测试自动化框架,为开发验收和回归测试提供项目结构,无需花时间自行构建和维护。 - Jalenium
一个 Java 的 Selenium API,可以轻松集成到任何使用 Selenium JAR 的 Maven Selenium Java 项目中。 - TestZeus
专为 Salesforce 而构建的开源 UI 测试自动化框架,带有自动定位器功能。
扩展
- BrowserMob Proxy
使得在浏览器中捕获性能数据更加容易,通常与 Selenium 或 Watir 等自动化工具结合使用。 - Selenoid
Selenium Hub 的后继者,将浏览器运行在容器中。可在任何平台上实现可扩展、不可变、自行托管的 Selenium-Grid,只需一个可执行文件。 - Selenium-Grid-Extras
简化对 Selenium Grid 节点的管理,通过在构建完成后清理测试环境来稳定节点。 - Selenium Grid Extensions
通过额外功能扩展 Selenium Grid。可在 Selenium 测试中结合 Sikuli 使用。 - Selenium Grid Router
一个轻量级服务器,用于将 Selenium WebDriver 请求路由和代理到多个 Selenium hub。 - Docker Selenium Grid
一个提供 Selenium Grid 原生视频录制功能的项目,最初用于与 docker-selenium 项目结合。 - Video Recorder Java
这个库可以轻松录制 UI 测试的视频,只需添加几个注解即可。 - Zalenium
基于 Docker 的可弹性 Selenium Grid,支持视频录制、实时预览以及在线/离线仪表板。 - SikuliFactory
针对 SikuliX 的 PageFactory 模型封装。 - Mailosaur
通过 Mailosaur 进行邮件测试/自动化的 Java 客户端。 - TrueAutomation.IO
旨在解决不稳定定位符(locators)问题的一个解决方案。
移动端测试自动化
- Appium
一款开源测试自动化框架,用于测试原生、混合和移动网页应用。它通过 WebDriver 协议驱动 iOS 和 Android 应用。 - Calabash
一款跨平台(Android 和 iOS)测试自动化框架,针对原生和混合应用。语法易于理解,即便非技术人员也能编写和执行应用的自动化验收测试。 - Robotium
全面支持原生和混合应用的 Android 测试自动化框架。可轻松编写功能性、系统以及用户验收测试,覆盖多个 Android Activity。 - UIAutomator
一种高效测试 UI 的方式,可针对真实 Android 设备和模拟器执行自动化功能测试。包含一个 GUI 工具(viewer)来扫描和分析 Android 应用的 UI 组件。 - Espresso
Google 在 2013 年开源的 Android UI 测试自动化框架,API 小巧、预测性强、易于学习,基于 Android Instrumentation 框架之上,可快速编写简洁而可靠的 Android UI 测试。
API 测试自动化
- hikaku
一个验证 REST-API 实现是否符合其规范的库。 - Karate-DSL
Karate 是一个 BDD JavaScript 框架,可对任意类型的 Web 服务执行一系列调用,并检查响应是否符合预期。可轻松构建复杂请求、遍历响应数据并将响应数据链式传递给下一步。内置的有效载荷验证引擎可进行“智能比对”,可选择忽略特定字段。 - Retrofit
针对 Android 和 Java 的类型安全 HTTP 客户端。 - REST-Assured
用于测试和验证 REST 服务的 Java 库。
Windows UI 测试自动化
- SikuliX
同上,使用图像识别来自动化任何在屏幕上可见的元素,适用于 Windows、Mac 或部分 Linux/Unix。 - Winium for Desktop
基于 WinForms 和 WPF 平台的 Windows 应用自动化测试工具,开源。 - WinAppDriver
Windows 应用程序驱动(WinAppDriver),在 Windows 10 上使用类似 Selenium 的方式进行 UI 测试自动化。支持通用 Windows 平台(UWP)、Windows Forms (WinForms)、WPF 以及经典 Win32 应用。
Unix / Linux UI 测试自动化
- SikuliX
同上,使用图像识别自动化桌面屏幕上的任何内容,适用于 Windows、Mac 或部分 Linux/Unix。
MacOS UI 测试自动化
- SikuliX
同上,使用图像识别自动化桌面屏幕上的任何内容。
服务器端测试自动化
- Citrus
用 Java 编写的测试框架,可为企业 SOA 应用创建完全自动化的端到端测试用例。Citrus 模拟周边接口,支持多种传输协议(HTTP、JMS、TCP/IP、FTP、SOAP、XML、JSON 等)。
虚拟环境
- Vagrant
易配置、可靠的工具,用于构建和维护可移植的虚拟开发环境。 - Docker
当前流行的容器平台。开发者可用 Docker 来解决“在我的机器上运行正常”这类问题;运维团队可利用 Docker 在隔离的容器中并行运行和管理应用。
性能 / 压力 / 负载测试
- Apache JMeter
功能测试和性能测试工具。 - The Grinder
负载测试框架,可轻松使用多台负载注入机进行分布式测试。 - Lightning
在 CI/CD 服务器上集成 JMeter 的非功能测试。 - Tsung
基于 Erlang 的多协议分布式负载测试工具。 - Gatling
基于 Scala、Akka 和 Netty 的开源负载测试框架,功能强大,易用且可维护度高。采用消息而非线程来模拟虚拟用户,可轻松模拟数千并发。 - CRUX
基于 Kubernetes(AKS)和 JMeter 的性能测试集成方案,使性能测试轻松接入 Azure CI/CD 流程。可在每次性能构建时创建并销毁所需的基础设施,从而降低成本。
安全检测
- BDD-Security
BDD-Security 使用 Gherkin 的 Given/When/Then 语法来描述安全需求,同时也能作为标准的单元/集成测试来执行,可集成到构建/测试/部署流程中。
构建工具
- Apache Ant
Java 库和命令行工具,通过在构建文件中描述的目标和依赖来驱动过程。最常用场景是构建 Java 应用。 - Apache Maven
管理软件项目和理解项目的工具。基于项目对象模型(POM)的概念,可统一管理构建、报告和文档。 - Gradle
开源构建自动化系统,可自动化软件包的构建、测试、发布、部署等,也可用于生成静态网站或文档等。
持续集成
- Jenkins
获奖的应用程序,用于监控重复任务的执行,如构建软件项目或执行定时任务。 - TeamCity
功能强大且用户友好的持续集成与部署服务器,开箱即用。 - Drone
面向繁忙开发团队的自助式持续集成平台。 - Thundra Foresight
一款 CI 可观察性工具,为测试套件提供可见性。
报告
- ReportPortal
强大的客户端-服务端报告工具。通过机器学习减少处理结果的时间,一键获取历史执行数据、日志、截图及任何二进制附件。可自定义 widget 和仪表板,提供实时集成,无需等待执行结束。支持各种语言和平台,免费、开源。 - Allure
开源框架,用于生成清晰、易读的测试执行报告。 - Gradle Allure Plugin
第三方 Gradle 插件,用于将 Allure 集成到 Spock、TestNG 和 JUnit 测试中。 - ExtentReports
.NET 和 Java 的 HTML 报告库,易于使用且报告美观。可折叠查看测试和步骤摘要以及执行状态,便于快速分析。 - ReportNG
一个简单的 HTML 报告插件,基于 TestNG 单元测试框架。 - Zebrunner Reporting
测试自动化管理工具,用于聚合并展示测试结果。可提供详细报告,包括测试日志、截图和视频录制。 - Difido-reports
一个生成 HTML 测试报告的通用实现。 - cucumber-reporting
主要用于在 Jenkins 上发布 Cucumber 测试报告,也可用于 Maven 命令行或其他场景。生成无需依赖即可离线查看的报告,并包含图表展示 Cucumber 测试运行结果。 - Cluecumber
针对 Cucumber 和 Karate 生成的 JSON 报告文件的报告库,可生成清晰而简洁的 HTML 报告,并具有高度的可定制性。
文档生成
(欢迎在此部分贡献相关条目)
编辑器、IDE 和控制台
- IntelliJ IDEA
免费开源的 IDE,支持 Java、Groovy、Scala 和 Android 开发。 - IntelliJ IDEA Selenium plugin
用于简化在 IntelliJ IDEA 中创建 Selenium Web 测试的插件。 - Eclipse
以 Java IDE、C/C++ IDE 和 PHP IDE 而闻名。 - Genie plugin
用于纯 AS 3.0 SWF 和 Flash 游戏的功能测试自动化工具。 - NetBeans
官方 Java 8 IDE,提供编辑器、代码分析和转换器,可轻松迁移到 Java 8 新特性。 - VSCode
代码编辑,重新定义。
ORM 框架和库
- Hibernate
帮助开发者更轻松地编写数据持久化代码,支持对象/关系映射(ORM),专注于数据持久层。 - Morphia
一个轻量级、类型安全的库,用于在 MongoDB 与 Java 对象之间映射。提供类型安全且流式的 Query API,并使用注解配置,无需编写 XML。 - MyBatis
一款优先支持自定义 SQL、存储过程和高级映射的持久化框架。几乎免去所有 JDBC 代码,不需手动设置参数或处理结果集。可使用简单的 XML 或注解进行配置。
有用的库
- StreamEx
对 Java 8 Streams 的增强库。 - Vavr
Java 8 的函数式扩展,提供持久化集合、函数式错误处理、并发编程模式、模式匹配等。 - Lombok
消除样板代码的工具,通过注解自动生成常用的代码结构(如 getter/setter、构造方法等)。 - AspectJ
Java 的无缝面向切面编程扩展。可实现错误检查与处理、同步、性能优化、监控和日志支持、调试支持、多对象协议等交叉关注点的干净模块化。 - aShot
基于 WebDriver 的截图工具。可截图、裁剪、美化、对比。 - WireMock
灵活的 Web 服务模拟与桩服务库。与一般的模拟工具不同,它会启动一个真实的 HTTP 服务器,以便与被测应用建立真实的 HTTP/HTTPS 连接。 - MockServer
用于模拟任意通过 HTTP/HTTPS 协议通信的系统(服务、网站等)。 - Mockito
流行的 Java Mock 框架,API 简洁,能编写易读的测试。 - PowerMock
允许对通常被视为无法测试的代码进行单元测试的 Java 框架。 - XMLUnit
用于测试和对比 XML 输出(Java 和 .NET 皆可)。 - Awaitility
一种 DSL,可简洁地表达对异步系统的期望。 - Beanmother
用于在测试中设置 Java Bean 测试数据的库。 - PIT
进行变异测试的工具(Pitest)。 - GreenMail
开源的易用邮件服务器测试套件,用于邮件集成测试或在开发中作为沙盒邮件服务器。 - image-comparison
Java 库,用于对比两张相同尺寸的图像并可将差异部分用矩形标记。可忽略图像的某些区域,常用于自动化 QA 测试。 - AssertJ
功能强大的流式断言框架,可与任意 xUnit 兼容。 - Truth
Google 开发的 Java/Android 流式断言框架。 - JSONassert
JSON 断言库。 - selenium-to-restassured
允许在 Selenium WebDriver Cookies 和 Rest Assured 之间来回共享的适配器。 - TestRail-JUnit
使基于 JUnit 的测试轻松集成 TestRail 的库。 - TestRail-TestNG
使基于 TestNG 的测试轻松集成 TestRail 的库。 - Allure-Environment-Creator
小型库,帮助轻松为 Allure 提供和存储环境信息。 - Owner
一款简化 Java Properties 文件处理的库,减少配置解析所需的样板代码。 - DeepfakeHTTP
一个使用 HTTP 转储(dump)作为响应来源的 Web 服务器工具,可模拟 REST、GraphQL 等各种 API 以进行客户端测试。 - Cucable
一个 Maven 插件,可以将 Cucumber 场景拆分成最小可运行的 Feature 文件和 Runner 类,从而简化并行执行。
测试数据
- Faker
生成姓名、地址、电话号码等虚拟数据的 Java 库实现。 - Instancio
用于在单元测试中创建完整填充的对象,包含 JUnit 5 扩展。
数据库测试自动化
- DBTestCompare
比较两个 SQL 查询结果的应用,支持所有提供 JDBC 驱动的数据库(已在 Microsoft SQL Server、Teradata、Snowflake、PostgreSQL 和 MySQL\MariaDB 测试)。
DBTestCompareGenerator - 用于生成可由 DBTestCompare 运行的数据库测试的工具。
其他
资源
- Serenity BDD (Thucydides) libraries
- Automation tests structure
Websites
- automated-testing.info — 测试自动化社区
- atinfo.github.io/at.info-knowledge-base — 不同工具和技术的测试自动化示例知识库
- selenium-simplified — 使用 Selenium 2 WebDriver 进行自动化浏览器测试的简化教程
Python 测试自动化
一个精心整理的 Python 测试自动化框架、工具、库和软件的综合列表,帮助软件工程师在 Python 上轻松地启动测试自动化工作。由 SDCLabs 赞助。
如果有问题/想法/疑问,可以加入这里的聊天讨论: https://gitter.im/atinfo/awesome-test-automation
目录
- xUnit 框架
- TDD / ATDD / BDD
- 测试数据操作
- 代码分析
- Web UI 测试自动化
- 移动端测试自动化
- Windows UI 测试自动化
- Unix / Linux UI 测试自动化
- MacOS UI 测试自动化
- REST API 测试
- 虚拟环境
- 性能 / 压力 / 负载测试
- 安全检测
- 持续集成
- 报告
- 文档生成
- 编辑器、IDE 和控制台
- 有用的库
- 资源
- 其他优秀的测试自动化列表
- 贡献
xUnit 框架
框架
- unittest
自带于 Python 的单元测试库。 - unittest2
Python 2.7 及以上 unittest 框架的新特性在 Python 低版本上的一个回移版(backport)。 pytest
一个成熟且功能全面的 Python 测试工具,帮助你编写更好的程序。- plugincompat - 用于测试运行 pytest 插件并检查兼容性。
- test-junkie
高度可配置的现代测试框架。 - nosetests
一种更好用的 Python 测试方式。 - slash
由 Python 编写的测试框架。 - lemoncheesecake
一个 Python 框架,面向功能测试,提供了 fixture、matcher、通过测试套件层次和元数据(测试/套件名称、描述、标签、属性、链接)来组织测试,拥有丰富的报告特性及多种报告格式(JSON、XML、HTML、JUnit)。
扩展
- proboscis
针对 Python 内置 unittest 模块和 Nose 的增强,借鉴了 TestNG 的特性。 - grail
用于基于“步骤”来创建测试脚本的库。 - testify
单元测试框架,提供了增强的测试夹具(fixture)设置、可将测试套件拆分为多个分块以便并行运行,还提供了 PEP8 命名约定和丰富的日志/报告输出选项。 - trial
unittest 的扩展,用于支持使用 Deferreds 编写异步单元测试,并增加了'skip'
和'todo'
结果类型。包括一个命令行程序,可发现测试并与 doctest、coverage 集成。 - subunit
透明地为 unittest 用例/套件提供在独立进程中运行的支持:防止测试中的系统级更改影响测试运行器。也允许从其他进程中的测试报告到 unittest 框架,形成统一的测试环境。 - testresources
提供一种机制来管理“资源”(多个测试需要的昂贵基础设施)。可根据需要来构造和释放资源;也可选用 TestSuite 优化测试运行顺序,从而减少构造与释放资源的次数。与 unittest 兼容。 - testtools
从 Twisted、Bazaar 等项目的自定义扩展中提炼而来的对 unittest 的有用扩展。 - Sancho
Sancho 2.1 执行测试并对失败的测试提供输出;不会统计通过/失败次数。目标是那些不会修复失败测试的项目。 - zope.testing
强大的测试运行器,包括对失败后进行 post-mortem 调试的支持,同时提供了性能剖析和覆盖率报告。独立包,与 Zope 无依赖,也可用于不使用 Zope 的项目。 - pythoscope
可以自动或半自动地为 Python 老旧系统生成单元测试的工具。 - testlib
为标准 unittest 提供更多功能:更多 assert 方法;支持模块级别的 setup/teardown;跳过测试等功能。 - dutest
面向 doctest 的面向对象接口,可从 doctest 中获取 unittest 测试用例。允许在交互示例中进行 setUp/tearDown,并可控制 doctest 提供的各种选项。通过特定类可以跨包层次选择性发现测试。 - green
干净、带颜色输出的测试运行器。可与 Nose 或 trial 类比。 - ddt
使用 unittest 进行数据驱动测试的库。 - pytractor
针对 Selenium Python 绑定的扩展,让测试 Angular.js 应用更简易。 - stestr
基于 subunit 的并行 Python 测试运行器。 - pytest-django
允许使用 pytest 工具测试你的 Django 项目/应用。 - pytest-asyncio
帮助在 pytest 中测试 asyncio 代码。
TDD / ATDD / BDD
BDD
- behave
BDD 工具。 lettuce
BDD 工具。- lettuce-tools - 一系列 Lettuce 的扩展和工具,填补了该项目的功能空白。
- contexts
一种可描述化 Python 测试的工具。 - mamba
为 Python 而生的 BDD 测试工具。 - pyvows
针对 Python 的异步行为驱动开发(BDD)。 - pytest-bdd
基于 py.test(即 pytest)的 BDD 库。 - pytest-play
一个 ATDD 的 pytest 插件,能够通过执行纯 YAML 文件来自动化动作、断言和测试指标。 - robotframework
一款通用的测试自动化框架,用于验收测试和验收测试驱动开发(ATDD)。 - awesome-robotframework
一个汇集 Robot Framework 资源与库的精选列表。 - radish-bdd
带有扩展功能的 BDD 测试工具。
断言(Assertions)
- pyshould
基于 pyhamcrest,采用 “Should” 风格的断言。 - pyhamcrest
Hamcrest 的 Python 版本匹配器。 - sure
一个强大且灵活的 Python 测试断言库。 - assertpy
Python 测试的简洁断言库,支持流式 API,兼容 Python 2 和 3。
Mocking
- mock
Python 的模拟(Mocking)和补丁(Patching)库。 - Ludibrio
优雅的 Python 测试替身框架(mocks、stubs、spy、dummies)。 - responses
用于模拟 Pythonrequests
库请求的工具库。 - doublex
强大的 Python 测试替身框架。 - freezegun
通过模拟 datetime 模块在测试中“穿越时间”。 - httpretty
HTTP 请求模拟工具。 - httmock
一个针对于requests
的 mock 库,兼容 Python 2.6+ 和 3.2+。 - pretenders
用于测试的假服务器(fake servers)。 - mock-server
基于 tornado,具有管理面板的简单 REST 和 XML-RPC API mock 服务器。 - VCR.py
自动模拟 HTTP 交互,以简化并加速测试。 - model-mommy
帮助 Django 测试中轻松创建大量对象的工具(简单而强大的 API)。 - django-test-plus
针对 Django 默认 TestCase 的有用扩展。 - Mockintosh
Mock 服务器生成器,可生成 RESTful APIs 并与消息队列通信来模拟异步任务。 - pytest-mock
将标准库unittest.mock
封装成 pytest fixture 的插件。
测试数据操作
- faker
生成虚拟数据的 Python 包。 - fake2db
假数据库生成器。 - ForgeryPy
易用的伪造数据生成器(Python 版,移植自 forgery)。 - radar
生成随机日期/时间。 - robotframework-faker
Robot Framework 中对 faker 的封装库。 - hypothesis
基于性质(Property)测试的库,灵感来自 Haskell 的 Quickcheck。 - factory_boy
替代 fixtures 的库,灵感源于 thoughtbot 的 factory_girl。 - fauxfactory
随机数据生成器。 - mimesis
速度快、极易使用,可生成大量多语言假数据的 Python 包。
代码分析
- ruff
用 Rust 编写的超高速 Python 代码检查器(linter)。 - pysonar2
一个 Python 的类型推断与索引器。 - coverage
代码覆盖率测量工具。 - pycallgraph
可视化 Python 应用调用流程(调用图)的库。 - Flake8
模块化源代码检查器,整合 pep8、pyflakes 等。 - pylama
Python 和 JavaScript 的代码审查工具。 - Pylint
源代码分析器。 - hacking
OpenStack Hacking 风格检查(flake8 插件)。 - prospector
分析 Python 代码,输出错误、潜在问题、风格违例以及复杂度信息。 - wemake-python-styleguide
史上最严格、最主观的 Python 代码风格检查器! - pytest-cov
帮助在 pytest 中识别已被测试执行到的代码部分的插件。
Web UI 测试自动化
库
- selenium webdriver
浏览器自动化工具。 - splinter
一个测试 Web 应用的工具,提供简洁的元素查找、表单操作等浏览器操作。 - mechanize
在 Python 中进行有状态的程序化 Web 浏览。
框架和封装
- play_selenium
pytest-play 插件,让你通过简单的 YAML 文件配合 Selenium 驱动浏览器。 - py.saunter
针对 Selenium RC 和 WebDriver 库的一款“有主见”的自动化框架。 - moz-web-qa
一个针对 py.test 的插件,为 Mozilla 的 WebQA 项目提供其他特性。 - testutils sst
基于 Python 的浏览器端功能测试框架。 - wtframework
用于配置化地编写 Web 测试的 Python 框架。 - holmium.core
提供页面对象 (Page Objects) 和常用工具来编写 Selenium 测试用例。 - robotframework-selenium2library
Robot Framework 的 Web 测试库。 - gocept.selenium
针对 Selenium 远程控制的 API,适合为任何 WSGI、Plone、Zope 2、ZTK 或 Grok 应用编写测试并与测试套件集成。 - webium
一个 Python 实现的 Page Object 模式库。 - robotframework-anywherelibrary
跨平台(桌面浏览器、Android、iOS)的 Robot Framework 测试库,内部集成了 Selenium2(WebDriver) 和 Appium。 - robotframework-pageobjects
使用 robotframework + selenium 实现的 Page Object 模式,可在框架外部使用。 - elementium
采用 jQuery 风格的 Python 语法糖,帮助进行稳定的自动化浏览器测试。 - slickqa
slick-webdriver-python 项目是对 Python WebDriver 客户端绑定的一种封装。 - selene
在 Python 中编写简洁 UI 测试,支持 AJAX、PageObjects、Widgets。 - hitch
面向服务式应用的高级集成测试框架。 - Needle
与 Selenium 和 nose 结合,可进行视觉测试,比较页面某部分的截图与“黄金截图”是否一致,也可测试 CSS 值及 HTML 元素位置。 - PyPOM
针对 Selenium 和 Splinter 的 Python Page Object Model 库。 - pypom_form
基于 PyPOM 的页面对象模型,适用于基于模式(schema)的表单。 - POM
轻量级的 Page-Object-Model 微框架,用于快捷愉悦地开发 Web UI 测试。 - websmith
Web 测试的领域特定语言(DSL)。 - pages
轻量级的 Page Object & Component Python 库,用于编写 UI 测试。 - seleniumbase
用于基于 Selenium WebDriver 构建自动化测试的简单 Python 框架,依赖 pytest 或 noose 等模块来运行,配合 noose 可生成 HTML 报告。 - Toolium
将 Selenium 和 Appium 库封装为 Python 工具,可在单个项目中测试 Web 和移动应用。提供可在配置文件中选择和配置驱动,并实现了 Page Object 模式及简单的可视化测试方案。 - Mops
一个 Python 封装库,提供友好统一的 API,可同时使用 Selenium、Appium 和 Playwright 来简化 Web 应用测试自动化。减少 Selenium 等的等待时长,并支持跨所有框架的视觉对比。
扩展
- webdriver_manager
简化对不同浏览器二进制驱动的管理。 - pytest_splinter
用于在测试中集成 pytest 与 splinter/selenium 的插件。 - lettuce_webdriver
让 lettuce 使用 Selenium WebDriver。 - Browsermob Proxy
Browsermob Proxy 的 Python 封装。 - FireRobot
Firefox 插件,以更高效的方式创建 Robot Framework / Selenium 测试。 - pytractor
Selenium Python 扩展,用于测试 Angular.js 应用。 - Selenium-Requests
扩展 Selenium WebDriver 类,使其可使用 Requests 库进行请求并自动处理 cookies、请求头等。 - selenium-respectful
一个最简的 Selenium WebDriver 封装,可同时在多个网站内受速率限制的情况下工作。支持并行处理。 - Mailosaur
通过 Mailosaur 进行邮件测试/自动化的 Python 客户端。 - gauge
轻量级、跨平台的测试自动化工具,用业务语言编写测试用例。虽然核心用 Go 语言编写,也可用 Python 驱动。 - Golem
一个完整的端到端测试自动化工具和框架。基于 Selenium WebDriver,易学易用(对编程要求不高),可使用 Python 来扩展。 - Pylenium.io
将 Selenium、Cypress 和 Python 的优势集于一体的工具包。 - Playwright
一个可用单一 API 来自动化 Chromium、Firefox、WebKit 浏览器的 Python 库。Playwright 提供稳定、高效且快速的自动化能力。
移动端测试自动化
- appium
用于测试原生、混合和移动 Web 应用的开源自动化框架。通过 WebDriver 协议驱动 iOS 和 Android 应用。 - Winium.StoreApps
针对 Windows Store 应用的开源测试自动化工具,可在模拟器上进行测试。实现了 Selenium Remote WebDriver。 - robotframework-androidlibrary
满足 Android 自动化需求的 Robot Framework 测试库。 - robotframework-appiumlibrary
Robot Framework 的 Appium 测试库。 - robotframework-ioslibrary
满足 iOS 自动化需求的 Robot Framework 测试库。 - uiautomator
Android uiautomator 测试工具的 Python 封装,Android 4.1+ 通过 ADB 连接设备即可。 - ATX
智能手机自动化工具,支持 iOS、Android、WebApp 及游戏自动化。 - Airtest
跨平台自动化测试框架,主要面向游戏测试,也适用于原生应用测试。
Windows UI 测试自动化
- Winium.Desktop
针对 WinForms 和 WPF 平台的 Windows 应用测试自动化工具,开源。实现了 Selenium Remote WebDriver。 - PyAutoGUI
跨平台的 GUI 自动化库,可在 Python 脚本中控制键盘和鼠标。 - robotframework-autoitlibrary
适用于 Robot Framework 的 Windows GUI 测试库。 - autopy
跨平台的 GUI 自动化工具包,功能相对简单。 - UISoup
Python 库,支持在 Windows 和 Mac OS 上进行 UI 相关测试。(仅支持 Python x86) - pywinauto
非常“Pythonic”的 Windows GUI 自动化库,支持 64 位的 Python 2 和 3。 - SikuliX
基于 OpenCV 的 GUI 测试框架,通过图像识别定位元素,用 Python 2.7 编写脚本。 - AutoItDriverServer
通过 (Remote)WebDriver API 控制/驱动 AutoIt 的 Selenium 服务器。
Unix / Linux UI 测试自动化
- ldtp
跨平台 Linux 桌面(GUI 应用)测试项目。 - fMBT
面向多平台 GUI 测试的 Python 库。 - SikuliX
同上,基于 OpenCV 的 GUI 测试框架,使用图像识别定位元素,脚本基于 Python 2.7。
MacOS UI 测试自动化
- PyAutoGUI
跨平台的 GUI 自动化库,可在脚本中操作键盘和鼠标。 - ATOMac
使用 Apple Accessibility API 来完整测试 Mac 应用程序的 Python 库。 - SikuliX
同上,基于 OpenCV 的 GUI 测试框架,使用图像识别定位元素,脚本基于 Python 2.7。
REST API 测试
- Rester
用于测试(RESTful)HTTP API 的框架。 - pyresttest
REST 测试和 API 微基准测试工具。 - siesta
Python 的 REST 客户端。 - play_requests
pytest-play 插件,让你通过简单的 YAML 文件使用requests
进行 HTTP 调用。 - gabbi
通过在 YAML 文件中声明请求和响应来运行 HTTP 测试的工具。 - Schemathesis
用于基于 Open API & Swagger 规范进行性质测试(property-based testing)的工具。它读取应用模式(schema)并生成测试用例,验证应用是否符合其模式。集成了 pytest & unittest。 - httprunner
简洁优雅且功能强大的 HTTP(S) 测试框架,支持使用 HAR 录制并生成测试用例。 - tavern
可命令行使用或作为 Python 库/pytest 插件的 RESTful API 测试工具,采用简洁、灵活的基于 YAML 的语法。
虚拟环境
- virtualenv
创建独立 Python 环境的工具。 - virtualenvwrapper
针对virtualenv
的一系列扩展。 - tox
通用的虚拟环境管理和测试命令行工具,可在不同 Python 版本上测试代码。 - PyVirtualDisplay
针对 Xvfb、Xephyr 和 Xvnc 的 Python 封装,用于 GUI 测试或自动截图等场景。 - pew
一系列管理多个虚拟环境的工具。 - Vex
在指定虚拟环境中运行命令。 - PyRun
一款无需安装的单文件 Python 版本。 - pyenv
简单的 Python 版本管理工具。 - Tapper
覆盖所有测试基础设施的工具。 - Poetry
Python 项目的依赖管理工具,简单易用。
性能 / 压力 / 负载测试
- Multi-Mechanize
开源的性能和负载测试框架。 - locust
由 Python 编写的可扩展用户负载测试工具。 - Yandex.Tank
负载和性能基准测试工具。 - pytest-benchmark
pytest 的基准测试(benchmark)插件。 - Airspeed Velocity
简单的 Python 基准测试工具,带有 Web 报告。 - The Grinder
负载测试框架,可使用多台负载注入机进行分布式测试。支持常见的 HTTP Web 服务器、SOAP、REST Web 服务、应用服务器(CORBA、RMI、JMS、EJB)等,以及自定义协议。脚本使用 Jython 或 Clojure。 - Tsung
开源的多协议分布式负载测试工具,可用于对 HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP、Jabber/XMPP 服务器进行压力测试。 - taurus
面向持续测试(Continuous Testing)的自动化友好框架。 - molotov
Python 3.5+ 的简单负载测试工具。 - Awesome pytest speedup
一份优化 pytest 测试套件速度的最佳实践清单。
安全检测
- sparta
一个图形界面应用,通过简化扫描和枚举阶段来协助渗透测试网络基础设施。 - OWASP ZAP
允许从 Python 脚本调用 OWASP ZAP 功能的 API。 - pythem
多功能的渗透测试框架,只能在 GNU/Linux 上运行,仅适用于合法范围内的测试。 - SQLMap
开源渗透测试工具,自动检测并利用 SQL 注入漏洞,可接管数据库服务器,支持丰富的检测和开关。 - fsociety
一整套渗透测试框架,包含“黑客”所需的脚本。
持续集成
- buildbot
自动化编译/测试流程的系统,以验证代码改动。 - jenkins
可扩展的开源持续集成服务器。 - travis-ci
免费的托管持续集成平台。
报告
- ReportPortal.io
强大的测试结果管理与分析平台,可与 pytest、RobotFramework 等集成。支持机器学习、实时集成、可视化趋势与统计、自定义仪表板和小部件,提供测试自动化的可见度,可嵌入到 CI/CD 流程中。免费开源,GitHub 可获取。 - allure pytest
PyTest 的 Allure 适配器。 - HTMLTestRunner
对 Python 标准库 unittest 的扩展,可生成简洁易读的 HTML 测试报告。 - unittest-xml-reporting
可将测试结果保存为 XML 文件的 unittest 测试运行器,可被各种工具(构建系统、IDE、CI 服务器等)消费。 - PrettyTable
在控制台生成美观的表格报告的 Python 库。 - pytest-html
为 PyTest 结果生成 HTML 报告的插件。
文档生成
- Sphinx
Python 文档生成器。 - MkDocs
支持 Markdown 的文档生成器。 - Pycco
最初的简洁实现(仅一百行左右)的文档生成器,类似“文学编程(literate-programming)”风格。
编辑器、IDE 和控制台
- pycharm
智能代码编辑器,对 Python 提供一流支持。 - pydev
基于 Eclipse 的完整功能 Python IDE。 - sublime
一个先进的文本编辑器,适合编写代码、标记文本和散文。 - ipython
一个多语言的交互式计算命令行,最初为 Python 而开发。 - VSCode
针对 Python 有大量插件的现代编辑器。
有用的库
这些库可能有助于构建更好的测试自动化。
- requests
人性化设计的 Apache2 授权 HTTP 库。 - WebTest
帮助测试 WSGI 应用的库。 - lxml
在 Python 中处理 XML 和 HTML 的最丰富、最易用库。 - suds
用于消费 Web Services 的轻量级 Python SOAP 客户端。 - fabric
精简基于 SSH 的应用部署或系统管理任务的 Python 库和命令行工具。 - BeautifulSoup
解析 HTML 文档(含有不完整标签等“Tag soup”)的库,可生成可用于提取数据的解析树。 - Soupy
BeautifulSoup 的封装,使构建复杂查询时更简单。 - PyQuery
在 XML 文档上使用 jQuery 式选择器的工具。内部使用 lxml 处理 XML/HTML。 - waiting
等待条件(predicate)达成的实用库。 - Comcast
模拟糟糕网络连接,以便构建更健壮的系统。 - dateutil
对标准 Python datetime 模块的扩展。 - python-tesseract
tesseract OCR(Linux、Mac、Windows)的包装类。 - pywinrm
Windows 远程管理 (WinRM) 的 Python 客户端,可从任何可运行 Python 的机器调用 Windows 本地对象(如运行批处理脚本、Powershell、WMI 变量等)。 - fig
借助 Docker 让开发环境更隔离更快速。 - gitpython
让你可高层次(git-porcelain)或底层次(git-plumbing)操作 git 仓库的 Python 库。 - Pyro4
允许在网络中通信的对象间轻松交互的 Python 工具。 - keyboard
在 Windows 和 Linux 上监听和模拟全局键盘事件。 - Errbot
一个聊天机器人,与常用的聊天服务相连,能将你的工具整合到对话中。 - tappy
一系列在 Python 中使用 TAP(Test Anything Protocol)处理测试数据的工具。 - pyscreenshot
可使用多种后端(X11 等)来将屏幕内容复制到 PIL 或 Pillow 图像对象中的库,用于替换仅支持 Windows 的ImageGrab
。 - TBVaccine
一个让 Python 堆栈跟踪(Traceback)更易读的工具,可自动突出重点行并弱化不必要行,同时用颜色区分各要素。 - PyPattyrn
帮助更容易、更快速地在项目中实现设计模式(Design Patterns)的 Python 包。 - Spyne
Python RPC 工具包,可以方便地使用多种协议/传输方式来对外暴露有良好定义的在线服务。 - Pexpect
让 Python 更好地控制其他应用的库。 - devtools-proxy
Chrome DevTools 的代理,可与 Selenium/ChromeDriver 完全兼容。 - extratools
超过 145 个比标准库 itertools/functools 等更高阶的函数式工具,也超越 toolz/fancy/more-itertools 等。 - retrying
一个通用的重试(retry)库,在 Python 中轻松为任何操作添加重试机制。 - mitmproxy
免费开源的交互式 HTTPS 代理。 - Python MSS
使用 ctypes 编写的纯 Python、多平台、多屏幕截图库,速度极快。 - Loguru
旨在为 Python 带来更愉悦的日志记录体验的库。 - prettyprinter
为 Python 3.5+ 提供语法高亮、声明式、可组合的 Pretty Printer 库。 - jsonschema
JSON Schema 在 Python 中的实现,强大且通用,用于验证 JSON 数据结构。
资源
发现新库、信息、工具等的地方
- python books
(Python 相关书籍资源) - pytest-tricks
关于 Python 测试工具 pytest 的技巧与心得 - http://hackebrot.github.io/pytest-tricks/
网站
- automated-testing.info — 测试自动化社区
- atinfo.github.io/at.info-knowledge-base — 各种工具和技术的测试自动化示例知识库