96SEO 2026-02-19 11:09 6
装饰器作用pytest.fixture用于定义测试用例的前置条件和后置操作。

可以创建可重…前言
测试框架时用于扩展测试功能的特殊注解或修饰符。
使用装饰器可以为测试函数提供额外的功能或行为。
装饰器作用pytest.fixture用于定义测试用例的前置条件和后置操作。
可以创建可重用的测试环境或共享资源并将其注入到测试函数中。
通常fixture
可以返回所需的对象或执行特定的设置和清理操作。
pytest.mark.parametrize用于参数化测试函数。
通过在装饰的函数上提供参数列表可以运行多组具有不同输入的测试用例。
这样可以轻松地扩展测试范围并减少重复的测试代码。
pytest.mark.skip使用这个装饰器可以跳过不需要运行的测试用例。
可以附带参数来提供跳过测试的原因或条件。
pytest.mark.skipif类似于
pytest.mark.skip这个装饰器可以基于条件来跳过特定的测试用例。
可以使用预定义的环境变量、Python
版本、操作系统等作为条件。
pytest.mark.xfail这个装饰器标记所装饰的测试用例为
failure”预期失败。
也就是说预计在某些条件下测试将失败如果出现预期的失败将被视为测试通过如果测试用例没有失败则会被标记为测试失败。
pytest.mark.repeat这个装饰器用于将测试用例重复运行多次。
可以指定重复次数来确定运行次数。
pytest.mark.usefixtures使用此装饰器可以在测试函数中直接使用已定义的
fixture而无需在函数签名中显式声明。
这样可以简化测试函数的编写。
pytest.mark.dependency用于声明测试用例之间的依赖关系以确保测试用例按正确的顺序执行。
参数说明scope指定fixture的作用域控制fixture的生命周期。
可选值包括function默认值每个测试函数调用一次“class”每个测试类调用一次“module”每个模块调用一次或session整个测试会话过程中调用一次params为fixture指定不同的参数化值。
可以是列表、元组或生成器。
autouse控制fixture是否自动应用于测试用例。
如果将其设置为True则fixture将自动应用于所有使用它的测试用例。
ids为参数化fixture中的每个参数指定一个名称或标识符列表以便在测试报告中更好地识别不同的参数。
name为fixture指定一个显示名称用于在测试报告中更好地标识fixture。
指定夹具为自动使用的也就是不需要在测试函数中显式地调用夹具它会自动应用于每个测试函数
setup_browser():设置和关闭浏览器的测试夹具driver
初始化Chrome浏览器驱动driver.get(https://www.baidu.com/)
设置夹具的参数列表夹具被参数化为两个元组每个元组包含两个值表示不同的搜索引擎关键字和期望结果
为每个参数设置一个标识符这些标识符在测试报告中将用于标识参数化的实例
全球领先中文互动问答平台)],namesearch_engine,ids[CSDN,
parametrize_search_engine(request):参数化的搜索引擎测试夹具return
test_search_home_page(setup_browser):测试在百度首页搜索功能assert
search_engine):测试导航功能包括输入关键字搜索并选择第一个结果driver
输入指定关键字例如csdn或百度知识driver.find_element(By.CSS_SELECTOR,
点击搜索按钮driver.find_element(By.CSS_SELECTOR,
选择搜索结果中的第一个链接进行点击driver.find_element(By.CSS_SELECTOR,
切换到最新窗口的句柄driver.switch_to.window(driver.window_handles[-1])assert
test_autouse_fixture():测试autouseTrue是否生效assert
__main__:pytest.main([test_run.py,
pytest.mark.parametrize装饰器定义了一个参数化测试函数,允许我们一次运行多组数据进行测试
参数化允许我们在不同的输入值之间进行测试以确保代码在各种情况下都能正常工作
如果表达式为False则会引发AssertionError异常。
assert
运行名为test_run.py的测试文件并通过-v参数显示每个测试用例的执行结果
__main__:pytest.main([test_run.py,
__main__:pytest.main([test_run.py,
装饰器为测试用例添加条件跳过的标记pytest.mark.skipif(platform.system()
2pytest.mark.skipif(platform.system()
__main__:pytest.main([test_run.py,
是Pytest测试框架中的一个装饰器用于标记预期测试失败的测试用例
pytest.mark.xfail(raisesZeroDivisionError)
__main__:pytest.main([test_run.py,
__main__:pytest.main([test_run.py,
-v])七、pytest.mark.usefixtures装饰器
test_example(setup_data):示例测试方法使用了前置条件
datapytest.mark.usefixtures(setup_data)
setup_data但不接收它作为参数print(执行方法测试)assert
__main__:pytest.main([test_run.py,
-s])定义了两个测试函数test_example和test_method它们都使用了名为setup_data的
作为测试的前置条件在test_example中setup_data
被作为测试函数的参数使用。
在函数内部data变量被赋值为setup_data
返回的值然后用于测试在test_method中使用了pytest.mark.usefixtures装饰器并将setup_data作为参数传递。
这样一来setup_data
的前置条件将在运行test_method之前自动执行。
虽然在函数体内没有显式接收setup_data作为参数但仍可以通过setup_data执行相关操作。
这两种写法分别适用于需要测试数据作为输入和不依赖测试数据作为输入的情况
pytest.mark.dependency(depends[test_login])
pytest.mark.dependency(depends[test_login,
__main__:pytest.main([test_run.py,
test_search这样可以确保测试按正确的顺序运行并且测试之间的依赖关系得到满足。
如果某个测试的依赖失败那么依赖它的测试也将被跳过执行
分组的测试用例pytest.main([test_run.py,
pytest.mark.group2装饰器我们可以将测试用例进行逻辑分组。
这样做的好处是可以只运行特定分组的测试用例而不是运行所有测试用例在上述代码中test_addition()
被分组为’group1’test_multiplication()
‘group2’运行以上示例会有警告信息这时我们需要把group1
pytest中在项目目录中创建一个pytest.ini如果你尚未创建并在其中定义自定义标记。
下面是在pytest.ini
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback