"""
@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=
【BBD实战-行为驱动自动化测试】
于 2022-12-17 11:43:03 首次发布