- 博客(48)
- 收藏
- 关注
原创 自动化测试工具playwright中文文档-------12.身份验证
Playwright 在称为浏览器上下文(browser contexts)的隔离环境中执行测试。这种隔离模型提高了测试的可重复性,并防止了测试失败的连锁反应。测试可以加载现有的认证状态,从而无需在每个测试中进行认证,进而加快了测试执行速度。
2025-04-11 13:10:31
806
原创 自动化测试工具playwright中文文档-------11.断言
你可以在expect当expect设置自定义超时你可以为断言设置自定义超时,这可以是全局的,也可以是针对每个断言的。默认的超时时间是5秒。全局超时在文件中,你可以为所有的断言设置全局的超时时间。这是通过修改expect对象的选项来实现的。# 设置全局超时时间为10秒(注意:这里的10_000实际上是10000毫秒,即10秒)每个断言的超时如果你只想为特定的断言设置超时,而不是全局的,你可以在调用断言方法时直接指定timeout参数。
2025-04-11 13:07:50
713
原创 自动化测试工具playwright中文文档-------10.API 测试
Playwright 可以用来访问你的应用程序的 REST API。有时,你可能希望直接从 Python 向服务器发送请求,而无需加载页面并在其中运行 JavaScript 代码。测试你的服务器 API。在测试中访问 Web 应用程序之前准备服务器端状态。在浏览器中执行某些操作后验证服务器端的后置条件。所有这些都可以通过方法来实现。以下示例依赖于包,该包将 Playwright 夹具添加到 Pytest 测试运行器中。
2025-04-10 15:59:54
483
原创 自动化测试工具playwright中文文档-------9.自动等待
Playwright 在对元素执行操作之前,会执行一系列的可操作性检查,以确保这些操作能够按预期进行。它会自动等待所有相关的检查通过,然后才会执行请求的操作。如果在给定的超时时间内所需的检查没有通过,则操作会失败,并抛出错误。例如,对于定位器解析为恰好一个元素locator必须能够准确地定位到页面上的一个元素,而不是多个元素或没有元素。元素是可见Visible的:要点击的元素必须对用户是可见的,即它必须位于视口内,并且没有被其他元素遮挡。元素是稳定的Stable:元素不能处于动画过程中或动画必须已经完成。
2025-04-10 15:52:37
890
原创 自动化测试工具playwright中文文档-------8.操作
Playwright 可以与 HTML 输入元素(如文本输入框、复选框、单选按钮、选择选项)进行交互,也可以执行鼠标点击、输入字符、按键和快捷键操作,以及上传文件和聚焦元素等操作。
2024-08-12 14:12:12
1085
原创 自动化测试工具playwright中文文档-------7.开始使用
这意味着在Windows平台上,如果你使用的是Python 3.7或更低版本,并且希望使用Playwright,那么你可能需要确保你的代码或Playwright的某些部分能够正确设置事件循环为ProactorEventLoop,以便能够支持异步子进程。不过,请注意,从Python 3.8开始,这通常是自动处理的,因此不需要额外设置。如果这不可行,你可能需要考虑在打包之前手动下载浏览器并将其放置在 Playwright 能够找到的位置,但这通常不是推荐的做法,因为它增加了打包的复杂性和可执行文件的大小。
2024-08-09 09:13:04
1760
原创 自动化测试工具playwright中文文档-------6.Pytest 插件参考
Playwright 提供了一个 Pytest 插件,用于编写端到端测试。要开始使用它,请参考入门指南。该插件使您能够利用 Pytest 的测试框架功能来组织和运行您的 Playwright 测试,同时享受 Playwright 提供的丰富 API 和功能,以模拟用户在浏览器中的行为。
2024-08-08 11:11:39
1915
原创 自动化测试工具playwright中文文档-------5.CI GitHub Actions
Playwright 测试可以在任何持续集成(CI)提供商上运行。在本节中,我们将介绍如何在 GitHub 上使用 GitHub Actions 运行测试。如果您想了解如何配置其他 CI 提供商,请查看我们关于持续集成的详细文档。要添加 GitHub Actions 文件,请首先创建。
2024-08-08 10:57:10
809
原创 自动化测试工具playwright中文文档-------3.运行和调试测试
您可以运行单个测试、一组测试或所有测试。通过使用--browser标志,可以在一个浏览器或多个浏览器上运行测试。默认情况下,测试以无头模式运行,这意味着在运行测试时不会打开浏览器窗口,结果将在终端中显示。如果您愿意,可以使用--headedCLI 参数以有头模式运行测试。你将学习如何从命令行运行测试如何调试测试运行测试命令行方式要运行你的测试,使用pytest命令。默认情况下,这将在Chromium浏览器上运行你的测试。
2024-08-07 16:38:44
1159
原创 自动化测试工具playwright中文文档-------4.跟踪查看器Trace Viewer
来打开保存的跟踪文件。请确保添加跟踪 zip 文件所在位置的完整路径。一旦打开,您可以点击每个动作或使用时间线来查看每个动作前后页面的状态。您还可以在测试的每个步骤中检查日志、源代码和网络请求。跟踪查看器会创建一个 DOM 快照,因此您可以完全与之交互,打开开发者工具等。是一个图形用户界面(GUI)工具,它允许您探索已录制的 Playwright 测试跟踪。这意味着您可以回溯和前进您的测试中的每一个动作,并直观地看到每个动作期间发生了什么。这将会录制跟踪并将其保存在您的。如果您没有使用 pytest,
2024-08-07 16:37:27
576
原创 自动化测试工具playwright中文文档-------2.生成测试
Playwright 内置了生成测试的能力,是快速开始测试的一个绝佳方式。它会打开两个窗口:一个浏览器窗口,用于与您希望测试的网站进行交互;另一个是 Playwright Inspector检查器窗口,您可以在其中录制测试、复制测试、清除测试以及更改测试的语言。您将学习:如何录制测试如何生成定位器(Locators)
2024-08-06 08:58:33
1297
原创 自动化测试工具playwright中文文档-------1.编写测试
Playwright 测试非常简单,它们执行操作,并断言状态是否符合预期。在执行任何操作之前,无需等待任何内容:Playwright 在执行每个操作之前会自动等待一系列可操作性检查通过。此外,在执行检查时也不需要处理竞态条件——Playwright 的断言设计方式能够描述最终需要满足的期望。就这样!这些设计选择允许 Playwright 用户完全忘记他们测试中的不稳定超时和竞态检查。您将学习如何编写第一个测试如何执行操作如何使用断言测试如何在隔离环境中运行如何使用测试钩子。
2024-08-05 08:52:34
1640
原创 自动化测试工具playwright中文文档-------0.playwright安装
Playwright 是专为满足端到端测试需求而创建的。它支持所有现代渲染引擎,包括 Chromium、WebKit 和 Firefox。您可以在 Windows、Linux 和 macOS 上进行测试,无论是本地测试还是在持续集成(CI)环境中,都可以进行无头模式或有头模式测试,并原生支持移动端模拟。Playwright 库可以用作通用的浏览器自动化工具,为同步和异步 Python 提供了一套强大的 API,用于自动化 Web 应用程序。
2024-08-02 09:46:39
725
原创 pytest8.x版本 中文使用文档-------32.示例:使用自定义目录收集器
默认情况下,pytest 使用来收集包含文件的目录,使用来收集其他目录。如果你想要自定义目录的收集方式,你可以编写自己的收集器,并使用钩子来连接它。
2024-08-01 09:14:29
324
原创 pytest8.x版本 中文使用文档-------31.示例:使用非python测试
是在表示测试失败时被调用的。如果你创建了自定义的集合节点,你可以返回一个你选择的错误表示字符串。这个字符串将以(红色)字符串的形式被报告出来。中,你会想要实现一个对YAML值更有趣的解释。通过这种方式,你可以很容易地编写自己的领域特定测试语言。你得到了一个点来表示通过的子项检查(sub1: sub1),以及一个失败项。文件的示例(该示例源自Ali Afshar的特定用途pytest插件。在开发你的自定义测试收集和执行时,仅仅查看集合树也是很有趣的。文件,并将YAML格式的内容作为自定义测试来执行。
2024-07-31 08:56:10
371
原创 pytest8.x版本 中文使用文档-------30.示例:改变标准(Python)测试发现机制
你可以通过在命令行上传递--ignore=path选项来轻松地在收集期间忽略某些测试目录和模块。pytest 允许使用多个--ignore选项
2024-07-30 09:42:22
925
原创 pytest8.x版本 中文使用文档-------29.示例:一个会话级夹具(session-fixture),可以查看所有已收集的测试
一个会话级别的夹具(fixture)可以有效地访问所有收集到的测试项。以下是一个夹具函数的示例,该函数遍历所有收集到的测试项,检查它们的测试类是否定义了一个名为。现在,测试类可以定义一个。
2024-07-29 14:44:34
452
原创 pytest8.x版本 中文使用文档-------28.示例:使用自定义标记
插件可以提供自定义标记并根据这些标记实现特定行为。"""添加命令行选项""""-E",help="只运行与指定环境名称 NAME 相匹配的测试。","""配置阶段注册额外的标记"""# 注册一个额外的标记"markers", "env(name): 标记测试以仅在指定的命名环境下运行""""在测试运行之前设置阶段,根据环境标记跳过不匹配的测试"""# 如果测试函数被标记了 env 并且没有匹配到命令行指定的环境。
2024-07-28 09:16:26
877
原创 pytest8.x版本 中文使用文档-------27.示例:参数化测试
pytest允许你轻松地参数化测试函数。对于基础文档,请参阅如何参数化固件和测试函数以下我们将通过内置机制提供一些示例。
2024-07-27 13:42:46
1475
原创 pytest8.x版本 中文使用文档-------26.示例:基本模式和示例
每次使用 pytest 时都输入相同的命令行选项序列可能会很繁琐。这里-ra选项表示“显示所有额外的测试摘要信息”,包括跳过的和预期失败的测试;-q选项表示“更简洁的进度输出”,即只显示测试进度的点。另外,你可以设置一个这会将-v(表示“详细输出”)选项添加到 pytest 的命令行中,而无需修改配置文件或每次手动输入。这种方式在临时需要更改 pytest 的行为时特别有用,比如当你想在特定的终端会话中启用更详细的输出时。在存在addopts。
2024-07-26 15:59:21
1473
原创 pytest8.x版本 中文使用文档-------25.解释:pytest导入机制和sys.path/PYTHONPATH
如果测试目录树没有按包的形式组织,那么每个测试文件都需要有一个与其他测试文件不同的唯一名称,否则如果pytest找到两个同名测试,将会引发错误。当测试模块位于包中时,保留完整的包名称非常重要,这可以避免问题并允许测试模块具有重复的名称。这样做将使测试成为正式的Python包的一部分,允许pytest解析它们的全名(例如,对于。相同,当测试目录树未按包进行组织时,要求测试模块名称必须是唯一的,因为模块在导入后会被放入。成为默认选项,但现在很明显,它也有自己的一系列缺点,因此在可预见的未来,默认选项将仍然是。
2024-07-25 10:05:06
1055
原创 pytest8.x版本 中文使用文档-------24.解释:不稳定的测试
不稳定的测试”是指表现出间歇性或偶发性失败的测试,其行为似乎具有非确定性。有时它通过,有时它失败,并且不清楚原因是什么。本页面讨论了 pytest 的一些功能,这些功能可以帮助识别、修复或缓解不稳定测试,以及其他一般策略。使用持续集成(CI)服务器时,不稳定测试尤其令人头疼,因为所有测试都必须通过,新的代码更改才能被合并。如果测试结果不是一个可靠的信号——即测试失败意味着代码更改破坏了测试——那么开发人员可能会对测试结果产生不信任,这可能导致他们忽视真正的失败。
2024-07-24 08:53:16
735
原创 pytest8.x版本 中文使用文档-------23.解释:良好的集成实践
此外,由于它是在已安装的包上运行测试,因此它更接近于模拟用户实际使用包的情况,这有助于识别任何与打包或分发相关的问题。它会对已安装的包进行测试,而不是对您的源代码检出进行测试,这有助于检测打包过程中的问题。这种略显复杂的导入技术的原因是,在大型项目中,多个测试模块可能会相互导入,因此推导出规范的导入名称有助于避免诸如测试模块被重复导入等意外情况。其中一些规则强制执行特定的风格选择,例如使用。这样的工具在虚拟环境中测试您的包,那么这将会是一个问题,因为您想要测试的是已安装的包版本,而不是仓库中的本地代码。
2024-07-23 09:06:18
1093
原创 pytest8.x版本 中文使用文档-------22.解释:关于夹具 fixtures
在测试中,fixtures为测试提供了一个定义好的、可靠且一致的环境或上下文。这可能包括环境(例如,配置有已知参数的数据库)或内容(如数据集)。fixtures定义了构成测试准备阶段(参见“测试的解剖”)的步骤和数据。在pytest中,它们是您定义的用于此目的的函数。它们也可以用于定义测试的执行阶段;这是设计更复杂测试的一种强大技术。通过参数,测试函数可以访问由fixtures设置的服务、状态或其他运行环境。对于测试函数使用的每个fixture,通常在测试函数的定义中有一个以该fixture命名的参数。
2024-07-23 09:05:42
1163
原创 pytest8.x版本 中文使用文档-------21.解释:测试的解剖
这可能意味着准备对象、启动/停止服务、在数据库中记录条目,甚至包括定义要查询的URL、为尚不存在的用户生成一些凭据,或者只是等待某个进程完成。断言步骤是我们查看结果状态并检查它是否符合我们预期的尘埃落定后的样子。测试中的断言是我们采取测量/观察并应用我们的判断力的地方。执行步骤是引发我们想要测试的行为的单一、状态改变的动作。这个行为是执行对被测系统(SUT)状态改变的操作,而我们可以通过观察结果改变的状态来评估这个行为。简而言之,测试的目的是查看某个特定行为的结果,并确保该结果与你的预期相符。
2024-07-22 13:18:31
189
原创 pytest8.x版本 中文使用文档-------19.测试夹具Fixtures参考
夹具的可用性是从测试的角度来确定的。一个夹具只有在它所定义的范围内才能被测试请求使用。如果夹具是在某个类内部定义的,那么只有该类内部的测试才能请求使用它。但是,如果夹具是在模块的全局范围内定义的,那么该模块内的每一个测试,即使它们定义在类内部,也可以请求使用这个夹具。类似地,一个测试也只有在与自动使用夹具(autouse fixture)处于相同的作用域时,才会受到该自动使用夹具的影响(请参考“自动使用夹具在其作用域内首先执行”)。此外,一个夹具也可以请求使用任何其他夹具,无论这些夹具是在哪里定义的
2024-07-20 14:58:15
1033
原创 pytest8.x版本 中文使用文档-------18.如何设置bash自动补全
这个命令将在当前bash会话中启用pytest的自动补全功能,但如果你关闭并重新打开终端,这个功能就会失效,除非你再次运行这个命令或将其添加到你的bash配置文件中。但是,如果你只想为pytest永久启用(但非全局)的自动补全功能,可以使用以下命令,并将其输出追加到你的。当你使用bash作为你的shell时,pytest可以使用argcomplete(之后,你需要重新加载你的bash配置文件(可以通过运行。命令或重新打开你的终端会话来实现)。
2024-07-19 09:14:36
142
原创 pytest8.x版本 中文使用文档-------17.编写插件
对于任何给定的钩子规范,可能存在多个实现,因此我们通常将钩子执行视为1:N函数调用,其中N是已注册函数的数量。选项,这样钩子调用就只会执行到N个已注册函数中的第一个返回非None结果为止,该结果随后被视为整个钩子调用的结果。如上所述,使用插件中的新钩子可能会因为标准的验证机制而稍显复杂:如果你依赖的插件没有被安装,验证将失败,并且错误消息对于你的用户来说可能难以理解。大多数对 pytest 钩子的调用会生成一个结果列表,该列表包含了所有被调用的钩子函数返回的非None结果。
2024-07-18 15:13:53
857
原创 pytest8.x版本 中文使用文档-------16.编写插件
如果你的插件使用了任何标记(marker),你应该注册它们,以便它们能够出现在pytest的帮助文本中,并且不会导致虚假的警告。例如,下面的插件将为所有用户注册和mark_with这段代码通过钩子函数在pytest配置阶段执行。方法用于向pytest的配置系统添加一条关于标记的说明,这些说明会出现在命令的输出中,帮助用户了解可用的标记及其用途。在上面的例子中,被描述为“这个标记用于酷炫的测试”,而mark_with则被描述为“这个标记接受参数”,并展示了如何接受多个参数(虽然示例中只明确提到了arg和。
2024-07-18 13:58:14
879
原创 pytest8.x版本 中文使用文档-------15.如何安装和使用插件
本节讨论安装和使用第三方插件。如果想自己编写插件,请参考“编写插件”部分。如果插件已安装,pytest 会自动发现并集成它,无需手动激活。:使用pytest集成来编写针对应用的测试。:编写针对应用的测试,启动一个reactor并从测试函数中处理deferreds。:提供覆盖率报告,与分布式测试兼容。:将测试分发到CPU和远程主机上,以在盒装模式下运行(允许在发生段错误时继续运行),在循环失败模式下运行,在文件更改时自动重新运行失败的测试。:在测试运行时立即报告失败。:使用行为驱动测试(BDD)编写测试。
2024-07-18 10:07:34
845
原创 pytest8.x版本 中文使用文档-------14.如何使用 skip 和 xfail 处理无法成功的测试
以下是在不同情况下如何在一个模块中无条件跳过测试的快速指南:XFail: 将测试函数标记为预期失败你可以使用xfail...当这个测试运行时,如果它失败了,则不会报告回溯信息。相反,终端报告会将其列在“预期失败”(XFAIL)或“意外通过”(XPASS)部分。如果测试按预期失败,它将被视为“通过”的测试(虽然是以失败的形式),不会影响测试套件的整体通过状态。如果测试意外地通过了(即你没有预期它会通过但实际上它通过了),则会被特别标记为“XPASS”,以便你能够注意到并可能需要进一步的调查。
2024-07-18 09:10:04
944
原创 pytest8.x版本 中文使用文档-------13.如何捕获警告warnings
虽然不推荐这样做,但你可以使用命令行选项来完全抑制测试运行输出中的警告摘要。记录警告提供了一种机会,用于在没有发出警告或满足其他条件时生成自定义的测试失败消息。f() # 假设f是一个可能发出警告的函数")如果在调用f()时没有发出任何警告,那么not record将评估为True。随后,你可以使用自定义的错误消息调用,以指示测试失败的原因。在这个例子中,如果f()没有发出任何警告,测试将失败,并显示消息“Expected a warning!”,这有助于测试人员或开发者理解测试失败的原因。
2024-07-17 16:26:30
736
原创 pytest8.x版本 中文使用文档-------12.如何捕获标准输出(stdout)/标准错误输出(stderr)
这意味着,在默认情况下,pytest会捕获并保存你的测试代码(包括测试函数、测试类中的设置和清理方法等)中产生的所有标准输出(stdout)和标准错误输出(stderr),以便在测试失败时提供有用的调试信息。夹具来捕获测试执行过程中的输出。选项更进一步,它不仅捕获通过 Python 标准库的输出,还捕获了所有通过文件描述符 1(标准输出)和 2(标准错误)的输出,即使这些输出并非来自 Python 代码。的输出,但请注意,这不是通过 pytest 的标准机制捕获的,可能是通过其他方式或假设的)。
2024-07-17 14:05:31
1117
原创 pytest8.x版本 中文使用文档-------11.如何管理日志
如果启用了彩色终端输出,则日志级别会以彩色显示。通过方法可以更改默认颜色或为自定义日志级别设置颜色。警告此功能及其API被认为是实验性的,可能会在不通知弃用的情况下在不同版本之间发生变化。
2024-07-17 10:38:34
1095
原创 pytest8.x版本 中文使用文档-------10.如何重新运行失败的测试并在测试运行之间保持状态
-lf- 仅重新运行失败的测试。--ff- 首先运行失败的测试,然后运行其余测试。这些选项对于快速迭代和修复测试套件中的问题时非常有用,因为它们允许你专注于那些最近失败的测试,而不是每次都运行整个测试套件。通过仅重新运行失败的测试,你可以更快地得到反馈,并减少不必要的测试运行时间。同时,选项还允许你优先解决最关键的问题,即那些最近失败的测试,然后再处理可能不那么紧急的其他测试。对于清理(通常不需要),选项允许在测试运行之前删除所有跨会话的缓存内容。其他插件可以访问。
2024-07-17 09:08:05
605
原创 pytest8.x版本 中文使用文档-------9.如何运行 doctests
默认情况下,所有符合test*.txt模式的文件都将通过 Python 的标准模块运行。这条命令会告诉 pytest 运行所有符合*.rst(即所有以.rst结尾的文件)模式的文件的 doctests。这样,您就可以让 pytest 运行使用 ReStructuredText(RST)编写的文档中的 doctests,而不仅仅是传统的文本文件。在命令行上,参数可以多次给出。默认情况下,pytest 会收集所有符合test*.txt模式的文件,并查找其中的 doctest 指令。但是,你可以使用。
2024-07-17 09:07:18
591
原创 pytest8.x版本 中文使用文档-------8.如何对模块和环境进行monkeypatch/模拟
有时测试需要调用依赖于全局设置的功能,或者调用那些不易测试的代码,如网络访问。夹具(fixture)可以帮助你安全地设置/删除属性、字典项或环境变量,或者修改sys.path以便进行导入。是一种在测试期间临时修改或覆盖代码行为的技术,常用于单元测试中以隔离测试环境或模拟外部依赖。使用:你可以修改对象的属性,以便在测试期间改变其行为。这对于测试依赖于某些对象状态的代码特别有用。:如果你需要修改配置字典或任何其他类型的字典,可以帮助你安全地进行这些修改,而不会影响到原始数据。
2024-07-16 16:15:06
1077
原创 pytest8.x版本 中文使用文档-------7.如何在测试中使用临时目录和文件
在编写测试时,经常需要创建临时目录和文件来模拟或存储测试过程中产生的数据。这样做的好处是测试完成后可以轻松地清理这些临时数据,避免对测试环境造成污染。tmp_path。
2024-07-16 10:37:01
817
原创 pytest8.x版本 中文使用文档-------6.如何参数化夹具和测试函数
例如,假设我们想要运行一个测试,该测试接受字符串输入,而我们希望通过一个新的 pytest 命令行选项来设置这些输入。但是,请注意,如果模块中还有其他不在类中的测试函数,它们也会接收到这些参数,除非它们显式地不接受这些额外的参数。参数为参数化测试中的特定实例添加标记,是一种灵活的方式来控制测试的期望行为,特别是当您想要明确指出某些测试用例是已知的问题或尚未实现的特性时。选项提供的值参数化测试函数。但是,请记住,这可能会根据你使用的操作系统和当前安装的插件产生不希望的副作用甚至错误,因此请自行承担风险使用。
2024-07-16 09:31:34
1518
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人