您的位置:首页 > 健康 > 美食 > 4p 4c 4r营销理论区别_射阳网页定制_销售营销方案100例_海南网站建设

4p 4c 4r营销理论区别_射阳网页定制_销售营销方案100例_海南网站建设

2024/12/23 15:55:44 来源:https://blog.csdn.net/weixin_48321392/article/details/143380119  浏览:    关键词:4p 4c 4r营销理论区别_射阳网页定制_销售营销方案100例_海南网站建设
4p 4c 4r营销理论区别_射阳网页定制_销售营销方案100例_海南网站建设

Pytest-Bdd-Playwright 系列教程(6):在测试步骤函数中设置别名&数据共享

  • 前言
  • 一、步骤别名
  • 二、特性文件
  • 三、测试脚本
  • 四、运行测试
  • 五、小测验
  • 总结

前言

有的时候,为了提高可读性,我们需要使用不同的名称来声明相同的 fixtures或步骤。在pytest-bdd,要使用同一步骤函数而赋予多个步骤名称,可以简单地对函数进行多次装饰。

通过本文内容的学习,你将能够:

  • 步骤别名:通过为步骤函数添加多个装饰器(例如 @given、@when、@then)来创建步骤别名;
  • target_fixture 参数:利用 target_fixture 共享步骤返回值,使其可被其他步骤引用。

一、步骤别名

steps 目录中定义的 common_steps.py 文件:

import logging
from playwright.sync_api import Page, expect
from pytest_bdd import given, when, then, parserslog = logging.getLogger(__name__)@given(parsers.parse('访问网站[{url}]'), target_fixture='get_url')
@given(parsers.parse('王大锤打开网址[{url}]'), target_fixture='get_url')
def goto(page: Page, url: str):page.goto(url)return url@given('等待页面加载完成')
@given('页面完全加载')
def wait_for_page_load(page: Page, get_url):log.info(f'返回的网址是:{get_url}')page.wait_for_load_state()@when(parsers.parse('王大锤点击元素[{selector}]'))
@when(parsers.parse('点击元素[{selector}]'))
@when(parsers.parse('单击[{selector}]'))
def click(page: Page, selector: str):page.locator(selector).click()@when(parsers.parse('在[{selector}]中输入[{text}]'))
@when(parsers.parse('向[{selector}]输入文本[{text}]'))
def input_text(page: Page, selector: str, text: str):page.locator(selector).fill(text)@then(parsers.parse('元素[{selector}]的文本应为[{text}]'))
@then(parsers.parse('验证元素[{selector}]文本为[{text}]'))
def check_element_has_text(page: Page, selector: str, text: str):expect(page.locator(selector)).to_have_text(text)
  • 我们可以通过添加多个装饰器的方式,为每个步骤函数来提供别名。这些步骤别名是独立的,只要被提到就会执行
  • target_fixture 参数,是用来指定步骤返回的 fixture 名称,使其在其他步骤中可以直接引用这个 fixture。在我们希望在多个步骤中共享数据时非常有用。

例如,在上述代码的 goto 步骤中使用 target_fixture ,并在 wait_for_page_load 步骤中引用 goto 的返回值。

二、特性文件

features 目录下的 login.feature 文件:

Feature: 登录功能Scenario: 登录Given 访问网站[https://parabank.parasoft.com/parabank/index.htm]Given 等待页面加载完成Scenario: 王大锤登录Given 王大锤打开网址[https://parabank.parasoft.com/parabank/index.htm]Given 页面完全加载

三、测试脚本

tests目录下的test_login.py文件:

import pytest
from steps.common_steps import *
from pytest_bdd import scenario@scenario('login.feature', '登录')
def test_login():pass@scenario('login.feature', '王大锤登录')
def test_wang_login():pass

四、运行测试

pytest .\tests\test_login.py

运行结果如下:

在这里插入图片描述

五、小测验

为了帮助小伙伴们巩固对步骤别名和 target_fixture 参数的理解,请根据提示补充 login.feature 文件中的缺失测试步骤,以确保覆盖用户登录的完整流程。

请补充完整的 login.feature 文件,确保涵盖所有步骤:

Feature: 登录功能Scenario: 登录Given 访问网站[https://parabank.parasoft.com/parabank/index.htm]Given 等待页面加载完成# 请在此处补充缺失的步骤Scenario: 王大锤登录Given 王大锤打开网址[https://parabank.parasoft.com/parabank/index.htm]Given 页面完全加载# 请在此处补充缺失的步骤

总结

通过为步骤函数添加多个装饰器,可以提高测试代码的可读性,使其更易于理解和维护。同时,利用 target_fixture 参数,能够有效地共享步骤之间的数据,从而简化测试逻辑并提升代码的复用性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com