大家好,我是阿萨。昨天安装了PlayWrigh,也写了第一个测试用例。今天就针对昨天的测试用例简单介绍下。写测试用例最主要的是要有断言,定位器,fixture(一直不喜欢这个词被翻译成夹具)和钩子函数。今天就简单介绍下PlayWright的这些简单用法。学完后就可以写测试脚本了。
Playwright断言是专门为动态网络创建的。检查会自动重试,直到满足必要条件。Playwright内置了自动等待功能,这意味着它在执行操作之前会等待元素的可操作性。Playwright提供一个期望函数来编写断言。
看一下下面的测试例子,看看如何使用定位器和网络优先断言来写测试。
import refrom playwright.sync_api import Page, expect def test_homepage_has_Playwright_in_title_and_get_started_link_linking_to_the_intro_page(page: Page): page.goto("https://playwright.dev/") # 标题中 包含“PlayWright". expect(page).to_have_title(re.compile("Playwright")) # 创建一个定位器 get_started = page.get_by_role("link", name="Get started") # 查看属性中值是否严格匹配 expect(get_started).to_have_attribute("href", "/docs/intro") # 点开始link get_started.click() # 期望URL中包含intro expect(page).to_have_url(re.compile(".*intro"))
断言
PlayWright提供了expect 功能来等待直到期望的条件满足。
import refrom playwright.sync_api import expectexpect(page).to_have_title(re.compile("Playwright"))
定位器
定位器是Playwright的自动等待和重试功能的核心部分。定位器代表了一种在任何时候都能找到页面上的元素的方法,用来对元素进行操作,如.click .fill等。
from playwright.sync_api import expect get_started = page.get_by_role("link", name="Get started")expect(get_started).to_have_attribute("href", "/docs/installation")get_started.click()
测试隔离
PlaywrightPytest插件是基于测试fixture的概念,如内置的页面fixture,它被传递到你的测试中。由于浏览器上下文,页面在测试之间是隔离的,这相当于一个全新的浏览器配置文件,每个测试都有一个新的环境,即使在一个浏览器中运行多个测试。
from playwright.sync_api import Page def test_basic_test(page: Page):
使用测试钩子
你可以使用各种夹具在你的测试之前或之后执行代码,并在它们之间共享对象。一个函数范围的夹具,例如,带有autouse的行为就像beforeEach/afterEach。而模块范围的夹具与autouse的行为类似于beforeAll/afterAll,在所有的测试之前和之后运行。
import pytestfrom playwright.sync_api import Page @pytest.fixture(scope="function", autouse=True)def before_each_after_each(page: Page): print("beforeEach") # 打开主页面. page.goto("https://playwright.dev/") yield print("afterEach") def test_main_navigation(page: Page): # 使用expect 断言. expect(page).to_have_url("https://playwright.dev/")
你学会了吗?如果觉得阿萨的内容对你有帮助,欢迎围观点赞。