import allure
import pytest
from selenium import webdriver

@pytest.fixture(scope="function")
def driver():
    driver=webdriver.Chrome()
    driver.maximize_window()
    yield driver
    driver.quit()

# 截图功能
# hook装饰器
# pytest_runtest_makereport 函数名不要改动
# item 当前的测试用例  call用例的结果
# yield暂停
# outcome.get_result()获得结果
# if report.when == "call" and (report.failed or report.passed): 检查测试用例阶段
# 用例成功或者失败
# driver = item.funcargs.get('driver')获得浏览器
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
    outcome = yield
    report=outcome.get_result()
    if report.when == "call" and (report.failed or report.passed):
        driver = item.funcargs.get('driver')
        if driver:
            if report.failed:
                with allure.step("添加失败的截图 ---> "):
                    allure.attach(driver.get_screenshot_as_png(), "失败的截图", allure.attachment_type.PNG)
            elif report.passed:
                with allure.step("添加成功的截图 ---> "):
                    allure.attach(driver.get_screenshot_as_png(), "成功的截图", allure.attachment_type.PNG)






# 不要把什么方法都丢到这里来

# 有 1  没有 2
# 用例有关  用例重跑 用例顺序 pytest的管理用例
# 生成allure测试报告

# base 文件 经常要做的操作 补充很多东西  没有固定的
# page文件夹 用例 页面 很多人有不同的写法 页面可细  可粗 pom很灵活根据自己想要的内容去写
# 用例 断言 可以在封装 不是只有assert 预期结果（外部传来的文件）==实际结果 方法
# 数据 data文件夹 可以根据的操作去写
# 总而言之 pom很灵活

# 打开浏览器 测完这条用例 关闭浏览器
# 搜索书籍  打开浏览器 测完这条用例  关闭浏览器
# 评论  打开浏览器 评论  关闭浏览器
# 打开浏览器 创建管理  关闭浏览器

# 登陆--点击作家专区--申请作者--发布小说--章节管理--新建章节--关闭浏览器

# 作家专区页面 zuozhePage
# 申请作者页面
# -发布小说
# 章节管理-新建章节
# 登陆  zuozhePage().方法  申请.方法()  小说.方法()  章节管理.方法() --关闭浏览器

# 搜索页查询
# 评论页 查询
# 登陆  搜索页查询  评论页（访问评论页  open()搜索）
# pom按照自己的思维去写 写出来 并且单独的用例执行 流程用例执行

# 生成Allure测试报告  前提操作：

# 1.jdk安装配置好  下载安装下  .exe的程序  一路下一步  在C盘找到你的安装  进行配置
# 环境变量配置：
# 找到path目录 新建到 C:\Program Files\Java\jdk1.8.0_211\bin
# 确定有没有java  在cmd里面输入java -version

# 2.下载commandline包 并且配置环境变量

# 3.安装allure-pytest库   pip install allure-pytest -i https://mirrors.aliyun.com/pypi/simple/

# 重启pycharm