【BBD实战-行为驱动自动化测试】

"""
@Author  : 南方朱雀
@Time    : 2022/12/16 22:52
@Email : 359493550@qq.com
@File    : conftest.py
"""
# 这个文件 是对pytest 运行环境的相关控制
# 获取一个浏览器驱动
import pytest
from selenium import webdriver

# 浏览器对象
driver = None

# 这段代码 每次 测试之前 都回执行 目的就是获取一个 浏览器的控制对象


@pytest.fixture(scope='session', autouse=True)
def browser():
    global driver
    if driver is None:
        driver = webdriver.Chrome()

    return driver

# 这个文件 是对pytest 运行环境的相关控制
# 获取一个浏览器驱动
import pytest
from selenium import webdriver

# 浏览器对象
driver = None

# 这段代码 每次 测试之前 都回执行 目的就是获取一个 浏览器的控制对象


@pytest.fixture(scope='session', autouse=True)
def browser():
    global driver
    if driver is None:
        driver = webdriver.Chrome()

    return driver

########################################################################################

"""
@Author  : 南方朱雀
@Time    : 2022/12/16 22:49
@Email   : 359493550@qq.com
@File    : bbs_login_test.py
"""
import pytest
import time
from selenium.webdriver.common.by import By


def test_login_00(browser):
    browser.get("http://127.0.0.0:8888")  # 控制浏览器 代开连接
    browser.find_element(By.XPATH, '//*[@placeholder="请输入用户名/手机/邮箱"]').send_keys("huace_tester")
    browser.find_element(By.XPATH, '//*[@placeholder="请输入登录密码"]').send_keys("huace_tester")
    browser.find_element(By.XPATH, '//*[@name="type" and @value="username"] /../button').click()
    time.sleep(2)
    # 让python脚本去判断 是否登录成功
    ele = browser.find_elements(By.LINK_TEXT, '退出')
    assert len(ele) > 0  # 判断页面上面 退出 元素的数量


# pytest.main(["--html=rport/jieguo.html"])


####################################################################

# @File    : bbs_login.feature
# 对测试过程的描述文档    Gherkin
Feature: 功能描述,内网BBS论坛--登录功能
  下面的场景就是对于测试过程步骤的描述
  以下的 描述 可以由 非测试人员编写 Feature、Scenario、Given、When
  通过特定的关键字 + 自然语言: 描述一个用户的操作行为

  Scenario: 场景1-正常登录
    # Given  数据定义
    Given 我有一个账户 用户名:huace_tester 密码:huace_tester


    # when 测试具体步骤
    When 打开这个登录页面 http://shop-xo.hctestedu.com/index.php?s=/index/user/logininfo.html
    And  输入用户名
    And  输入密码
    And  点击登录按钮


    # Then 然后判断以下
    Then 判断页面中是否包含登出链接,如果没有则代表登录失败


###############################################################################

# @File    : bbs_login_bdd_test.py
# 根据 行为描述文档 而编写
from pytest_bdd import given, parsers, when, then, scenario
from selenium.webdriver.common.by import By
import time


# 和 Given 行为 [数据的定义]
@given(parsers.parse("我有一个账户 用户名:{username} 密码:{password}"), target_fixture="user")
def user(username, password):
    return dict(username=username, password=password)


# 对应一个行为
@when(parsers.parse("打开这个登录页面 {url}"))
def go_to_url(url, browser):
    browser.get(url)


# 输入用户名
@when("输入用户名")
def input_username(browser, user):
    browser.find_element(By.XPATH, '//*[@placeholder="请输入用户名/手机/邮箱"]').send_keys(user['username'])


# 输入密码
@when("输入密码")
def input_password(browser, user):
    browser.find_element(By.XPATH, '//*[@placeholder="请输入登录密码"]').send_keys(user["password"])


# 点击登录按钮
@when("点击登录按钮")
def input_login(browser):
    browser.find_element(By.XPATH, '//*[@name="type" and @value="username"] /../button').click()


@then("判断页面中是否包含登出链接,如果没有则代表登录失败")
def check_login(browser):
    time.sleep(2)
    # 让python脚本去判断 是否登录成功
    ele = browser.find_elements(By.LINK_TEXT, '退出')
    assert len(ele) > 0   # 判断页面上面 退出 元素的数量


@scenario("bbs_login.feature", "场景1-正常登录")
def test_bbs_login_001():
    pass








本文已存档:链接:https://pan.baidu.com/s/1-jbo7Iva5VpeB7rzkN_mIg?pwd=







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值