如何为Playwright .NET创建可生效的全局测试配置
核心问题说明
你参考Node.js版编写的playwright.config.js仅适用于Playwright Node.js的原生测试运行器,Playwright .NET 不会识别和加载该文件,所以配置无法生效。
方案1:封装测试基类(最灵活,推荐)
将通用配置封装到测试基类中,所有测试类直接继承基类即可复用全局配置,无需重复定义。以下为NUnit框架的实现示例,xUnit/MSTest可对应调整生命周期钩子:
using Microsoft.Playwright; using NUnit.Framework; public class BasePlaywrightTest { protected IPlaywright PlaywrightInstance { get; private set; } protected IBrowser Browser { get; private set; } protected IBrowserContext Context { get; private set; } protected IPage Page { get; private set; } [OneTimeSetUp] public async Task GlobalSetup() { PlaywrightInstance = await Playwright.CreateAsync(); // 全局浏览器启动配置 var browserLaunchOptions = new BrowserTypeLaunchOptions { Headless = false, SlowMo = 50 }; Browser = await PlaywrightInstance.Chromium.LaunchAsync(browserLaunchOptions); } [SetUp] public async Task TestSetup() { // 全局上下文配置 var contextOptions = new BrowserNewContextOptions { ViewportSize = new ViewportSize { Width = 1280, Height = 720 }, IgnoreHTTPSErrors = true }; Context = await Browser.NewContextAsync(contextOptions); Page = await Context.NewPageAsync(); } [TearDown] public async Task TestTeardown() { // 全局失败自动截图逻辑 if (TestContext.CurrentContext.Result.Outcome.Status == NUnit.Framework.Interfaces.TestStatus.Failed) { var screenshotPath = Path.Combine(@"C:\stuff\screenshots", $"{TestContext.CurrentContext.Test.Name}.png"); await Page.ScreenshotAsync(new PageScreenshotOptions { Path = screenshotPath }); } await Context.CloseAsync(); } [OneTimeTearDown] public async Task GlobalTeardown() { await Browser.CloseAsync(); PlaywrightInstance.Dispose(); } }
测试类直接继承基类即可使用配置:
using NUnit.Framework; public class SiteTest : BasePlaywrightTest { [Test] public async Task CheckHomePageTitle() { await Page.GotoAsync("https://example.com"); Assert.That(await Page.TitleAsync(), Is.EqualTo("Example Domain")); } }
方案2:使用.runsettings文件配置
如果需要不修改代码调整配置,可在项目根目录新建playwright.runsettings文件,示例内容如下:
<?xml version="1.0" encoding="utf-8"?> <RunSettings> <Playwright> <BrowserName>chromium</BrowserName> <Headless>false</Headless> <SlowMo>50</SlowMo> <ViewportSize>1280x720</ViewportSize> <IgnoreHTTPSErrors>true</IgnoreHTTPSErrors> <OutputDir>C:\stuff\screenshots</OutputDir> <Quiet>false</Quiet> </Playwright> </RunSettings>
运行测试时指定配置文件即可生效:
- 命令行运行:执行
dotnet test --settings playwright.runsettings - Visual Studio运行:在测试资源管理器中选择「设置」→「配置运行设置」→「选择解决方案范围的runsettings文件」,选中对应文件即可。
内容的提问来源于stack exchange,提问作者ThatGuyZ
相关产品推荐
相关产品推荐

