You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Unittest管理Playwright浏览器实现公司网页登录测试的问题求助

代码调整方案

问题核心原因

原有代码未遵循unittest的实例方法规则,也未将浏览器、页面对象存储为实例属性,导致测试方法无法访问页面对象,同时代码执行顺序逻辑混乱。

具体修改点

  • 用unittest的setUp方法做测试前置操作:初始化playwright、启动浏览器、创建页面、打开目标地址,所有资源存为self.xxx实例属性,方便测试方法调用
  • 用unittest的tearDown方法做测试后置操作:每次测试完成后关闭上下文和浏览器,避免资源残留
  • 测试方法第一个参数改为self,通过self.page调用页面对象执行操作
  • 调整playwright初始化位置,不要直接写在类定义内部
  • 替换原生assert为unittest自带的断言方法,适配测试框架的错误捕获逻辑
from playwright.sync_api import sync_playwright
from locators import Locators_evou
import unittest

class TestLogin(unittest.TestCase):
    def setUp(self) -> None:
        # 测试前置:初始化浏览器和页面
        self.playwright = sync_playwright().start()
        self.browser = self.playwright.chromium.launch(channel="chrome", headless=False, slow_mo=500)
        self.context = self.browser.new_context()
        self.page = self.context.new_page()
        self.page.goto("http://localhost:3000/")

    def test_login_success(self):
        # 登录操作流程
        self.page.click(Locators_evou.user_Log)
        self.page.fill(Locators_evou.user_Log, "Liliana")
        self.page.click(Locators_evou.password_log)
        self.page.fill(Locators_evou.password_log, "1234")
        self.page.check(Locators_evou.session_Log)
        self.page.click(Locators_evou.login_log)
        # 断言登录成功提示可见
        self.assertTrue(self.page.is_visible("¡Bienvenido!"))

    def tearDown(self) -> None:
        # 测试后置:清理资源
        self.context.close()
        self.browser.close()
        self.playwright.stop()

if __name__ == "__main__":
    unittest.main()

调整后运行代码即可自动执行完整测试流程,每次运行都会重新打开浏览器执行登录测试,完成后自动关闭浏览器。如果需要运行多个测试用例,直接在类中添加test_开头的方法即可,每个用例都会独立打开新的浏览器上下文,互不干扰。

内容的提问来源于stack exchange,提问作者Liliana González

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:57:04