同一个模块下,执行多条用例

本文介绍了Python单元测试的基本原则,强调了方法名必须以'test'开头以确保测试识别。同时,解释了用例执行顺序遵循ASCII码规则,从0-9到A-Z再到a-z。在代码中,`# -*- coding: UTF-8 -*-`用于声明文件的UTF-8编码,而中文字符串前的'u'标记表示其为Unicode编码。

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

基本原则:方法名必须以test开头

                用例执行顺序遵循ASCLL码  0-9-A-Z-a-z

               # -*- coding: UTF-8 -*- 这句是告诉python程序中的文本是utf-8编码,让python可以按照utf-8读取
                中文前加u就是告诉python后面的是个unicode编码,存储时按unicode格式存储。

 

 

# -*- coding: utf-8 -*-

import time
import unittest
from utils.GetseleniumDriver import GetseleniumDriver
from TestShareLib.RYcontent import RYcontent
from TestShareLib.CommonIndex import CommonIndex


# 定义一个类,并继承这个类
class test02(unittest.TestCase):

    @classmethod
    def setUpClass(self):
        self.driver = GetseleniumDriver().driver

    @classmethod
### 如何使用 Pytest 在每个测试用中运行多个浏览器 为了在每个测试用中支持多个浏览器,可以通过 `pytest` 的参数化功能 (`@pytest.mark.parametrize`) 和 Selenium WebDriver 来实现跨浏览器的自动化测试。以下是具体的实现方式: #### 使用 Parametrize 实现多浏览器支持 Pytest 提供了一个强大的装饰器 `@pytest.mark.parametrize`,用于对同一个测试函数应用不同的输入数据集。在这种情况下,可以将不同的浏览器名称作为参数传递给测试函数。 ```python import pytest from selenium import webdriver @pytest.fixture(scope="function") def browser(request): """Fixture to initialize and teardown the web driver.""" browser_name = request.param.lower() if browser_name == "chrome": driver = webdriver.Chrome() # Ensure chromedriver is installed elif browser_name == "firefox": driver = webdriver.Firefox() # Ensure geckodriver is installed else: raise ValueError(f"Unsupported browser: {browser_name}") yield driver driver.quit() @pytest.mark.parametrize("browser", ["Chrome", "Firefox"], indirect=True) def test_example(browser): """Test example that runs on multiple browsers.""" browser.get("https://www.example.com") # Open a website title = browser.title assert "Example Domain" in title, f"Title mismatch: {title}" # Check page title ``` 上述代码片段展示了如何通过 `parametrize` 装饰器来动态加载不同类型的浏览器实[^1]。每次调用 `test_example` 函数时,都会创建一个新的浏览器会话并执行相同的测试逻辑。 #### 配置文件优化 (conftest.py) 如果希望进一步简化配置过程,可以在项目的根目录下定义一个名为 `conftest.py` 的文件,并集中管理所有的 fixture 定义以及初始化操作。 ```python # conftest.py import pytest from selenium import webdriver @pytest.fixture(params=["Chrome", "Firefox"]) def browser(request): """Initialize different browsers based on parameter values.""" if request.param == "Chrome": driver = webdriver.Chrome() elif request.param == "Firefox": driver = webdriver.Firefox() else: raise ValueError(f"Unsupported browser type: {request.param}") yield driver driver.quit() ``` 这样,在其他模块中的任何地方都可以直接导入这个 fixture 并立即获得所需的功能而无需重复声明。 #### 处理复杂场景下的依赖关系 当某些测试用需要登录状态或其他前置条件时,单独依靠 setup/teardown 方法难以满足需求。此时可利用 pytest 的 fixtures 功能提供更灵活的支持[^5]。如设置 scope 参数为 module 或 session 可以让特定资源在整个测试套件期间保持有效而不是每条用重新构建一次。 --- ### 总结 通过结合 pytest 的 parametrize 特性和 Selenium WebDriver API,能够轻松达成针对多种主流浏览器环境开展全面覆盖度较高的前端 UI 自动化验证目标。同时借助于精心设计的 fixtures 结构还可以很好地应对那些存在特殊上下文关联性的业务流程测试挑战[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值