【AutoTest】Python自动化测试工具详解大全
😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!
自动化测试工具大全(Java) 自动化测试工具大全(Python)
自动化测试工具大全(Python)
1.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
代码。
2.TDD / ATDD / BDD
BDD
behave:BDD 工具。
lettuce:BDD 工具。
lettuce-tools:一系列 Lettuce 的扩展和工具,填补了该项目的功能空白。
contexts:一种可描述化 Python 测试的工具。
mamba:为 Python 而生的 BDD 测试工具。
pyvows:针对 Python 的异步行为驱动开发(BDD)。
pytest-bdd:基于 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:用于模拟 Python requests 库请求的工具库。
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
的插件。
3.测试数据操作
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 包。
4.代码分析
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 中识别已被测试执行到的代码部分的插件。
5.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 提供稳定、高效且快速的自动化能力。
6.移动端测试自动化
7.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 服务器。
8.Unix / Linux UI 测试自动化
ldtp:跨平台 Linux 桌面(GUI 应用)测试项目。
fMBT:面向多平台 GUI 测试的 Python 库。
SikuliX:同上,基于 OpenCV 的 GUI 测试框架,使用图像识别定位元素,脚本基于 Python 2.7。
9.MacOS UI 测试自动化
PyAutoGUI:跨平台的 GUI 自动化库,可在脚本中操作键盘和鼠标。
ATOMac:使用 Apple Accessibility API 来完整测试 Mac 应用程序的 Python 库。
SikuliX:同上,基于 OpenCV 的 GUI 测试框架,使用图像识别定位元素,脚本基于 Python 2.7。
10.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 的语法。
11.虚拟环境
virtualenv:创建独立 Python 环境的工具。
virtualenvwrapper:针对 virtualenv 的一系列扩展。
tox:通用的虚拟环境管理和测试命令行工具,可在不同 Python 版本上测试代码。
PyVirtualDisplay:针对 Xvfb、Xephyr 和 Xvnc 的 Python 封装,用于 GUI 测试或自动截图等场景。
pew:一系列管理多个虚拟环境的工具。
Vex:在指定虚拟环境中运行命令。
PyRun:一款无需安装的单文件 Python 版本。
pyenv:简单的 Python 版本管理工具。
Tapper:覆盖所有测试基础设施的工具。
Poetry:Python 项目的依赖管理工具,简单易用。
12.性能 / 压力 / 负载测试
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 测试套件速度的最佳实践清单。
13.安全检测
sparta:一个图形界面应用,通过简化扫描和枚举阶段来协助渗透测试网络基础设施。
OWASP ZAP:允许从 Python 脚本调用 OWASP ZAP 功能的 API。
pythem:多功能的渗透测试框架,只能在 GNU/Linux 上运行,仅适用于合法范围内的测试。
SQLMap:开源渗透测试工具,自动检测并利用 SQL 注入漏洞,可接管数据库服务器,支持丰富的检测和开关。
fsociety:一整套渗透测试框架,包含“黑客”所需的脚本。
14.持续集成
buildbot:自动化编译/测试流程的系统,以验证代码改动。
jenkins:可扩展的开源持续集成服务器。
travis-ci:免费的托管持续集成平台。
15.报告
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 报告的插件。
16.文档生成
Sphinx:Python 文档生成器。
MkDocs:支持 Markdown 的文档生成器。
Pycco:最初的简洁实现(仅一百行左右)的文档生成器,类似“文学编程(literate-programming)”风格。
17.编辑器、IDE 和控制台
pycharm:智能代码编辑器,对 Python 提供一流支持。
pydev:基于 Eclipse 的完整功能 Python IDE。
sublime:一个先进的文本编辑器,适合编写代码、标记文本和散文。
ipython:一个多语言的交互式计算命令行,最初为 Python 而开发。
VSCode:针对 Python 有大量插件的现代编辑器。
18.有用的库
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 数据结构。
19.资源
作者:G皮T