【nodejs版playwright】02-支持多套测试环环境执行用例

本文介绍了如何在使用Playwright进行自动化测试时,通过dotenv管理不同测试环境(如staging和production)的环境变量,包括安装dotenv库、创建配置文件、环境变量引用和全局初始化的步骤,以及在package.json中添加快捷运行命令的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日常测试中,一套测试用例需支持在不同的测试环境运行,如staging、production
因为涉及不同的测试环境,那使用的环境变量或参数就不一样,如staging登录可能用到的用户名是A,而production可能用到的是b。
所以需要有一个地方统一管理这些环境变量,并合理配置,让测试用例能获取到这些参数。

默认情况下,不同的配置文件均以 .env 开头,如
staging: .env.staging
production: .env.production

操作步骤

1. 安装 dotenv

pnpm add dotenv --save

2. 新建配置文件

.env.production

BASE_URL=https://dev.mi.com
USERNAME=xxx
PASSWORD=xxx

.env.staging

# 注意配置host
BASE_URL=http://onebox.developer.mi.com/
USERNAME=xxx
PASSWORD=xxx

3. 新建环境变量引用文件

src/utils/env.ts

export default class Env {
    public static BASE_URL = process.env.BASE_URL;
    public static USERNAME = process.env.USERNAME;
    public static PASSWORD = process.env.PASSWORD;
}

4. 新建全局初始化文件

src/setup/global-setup.ts

import { type FullConfig } from "@playwright/test";
import dotenv from "dotenv";

async function globalSetup(config: FullConfig) {
    if (process.env.test_env) {
        dotenv.config({
            path: `.env.${process.env.test_env}`,
            override: true
        })
    }
}

export default globalSetup;

5. 引用全局初始化文件

playwright.config.ts

export default defineConfig({
  ......
  globalSetup: 'src/setup/global-setup.ts',
  ......
});

运行配置

1. 在终端执行运行

# 以下命令将自动加载 .env.production 文件中的配置
test_env=production npx playwright test

2. 增加快捷运行命令

package.json

{
  ......
  "scripts": {
    "production": "test_env=production npx playwright test",
    "staging": "test_env=staging npx playwright test"
  },
  ......
}

使用以下命令运行

npm run staging
Playwright.js是一个基于Chromium、Firefox和WebKit的Node.js库,用于自动化网页浏览器的渲染和交互。如果你想使用它来编写顺序执行的不同测试,你可以按照以下步骤: 1. **安装和引入Playwright**: 首先,你需要安装Playwright,可以通过npm来安装: ``` npm install playwright ``` 2. **初始化浏览器上下文**: 创建一个新的`playwright`实,并打开一个浏览器会话: ```javascript const { chromium } = require('playwright'); async function runTest() { const browser = await chromium.launch(); const context = await browser.newContext(); try { // 你的测试代码将在这里执行 } finally { await context.close(); // 关闭会话 await browser.disconnect(); // 关闭浏览器 } } ``` 3. **定义测试函数**: 对于每个单独的测试,可以创建一个独立的async函数并依次执行它们: ```javascript async function testScenarioOne() { // 编写第一个测试 await page.goto('http://example.com/scenario-one'); // 等待元素加载或执行操作 // ... } async function testScenarioTwo() { // 编写第二个测试 await page.goto('http://example.com/scenario-two'); // 同样的等待和操作 // ... } async function main() { await runTest(); // 顺序执行测试 await testScenarioOne(); await testScenarioTwo(); } main().catch((error) => console.error(error)); ``` 4. **错误处理**: 每个测试结束后记得关闭资源,如果遇到异常,可以在finally块里处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值