第二天直播作业

import time

import allure
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By

类名标志出测试模块是什么

class TestCeShiRen:
“”"
冒烟测试点:
1*,正常的搜索功能

异常测试点:
1,搜索内容为特殊字符
2,搜索不存在的数据
3,搜索字符超过范围
注意:
===================================
4*,搜索内容为空
===================================
塞入报告,需要使用命令行的方式执行 pytest 文件名 --alluredir=./报告名称
查看报告: allure serve 报告名称
===================================
这里我不会写在出现异常时截图,也就没有代码实现,之前想了能不能用try,但是发现好像有问题
,下面是网上看的但是没看懂,没理解,所以就注释了
"""

# @pytest.hookimpl(tryfirst=True, hookwrapper=True)
# def pytest_runtest_makereport(self, call):
#     # execute all other hooks to obtain the report object
#     outcome = yield
#     rep = outcome.get_result()
#
#     # 以下为实现异常截图的代码:
#     # rep.when可选参数有call、setup、teardown,
#     # call表示为用例执行环节、setup、teardown为环境初始化和清理环节
#     # 这里只针对用例执行且失败的用例进行异常截图
#     if rep.when == "call" and rep.failed:
#         # 检查driver对象是否包含get_screenshot_as_png方法
#         if hasattr(self.driver, "get_screenshot_as_png"):
#             # get_screenshot_as_png实现截图并生成二进制数据
#             # allure.attach直接将截图二进制数据附加到allure报告中
#             allure.attach(self.driver.get_screenshot_as_png(), "异常截图", allure.attachment_type.PNG)

# setup_class在类中只执行一次
def setup_class(self):
    self.driver = webdriver.Firefox()
    # 添加隐式等待:
    self.driver.implicitly_wait(3)

# setup在每个测试方法执行前都会执行一次
def setup(self):
    self.driver.get("https://ceshiren.com/")

# 后置条件:执行一遍
def teardown_class(self):
    self.driver.quit()

# 冒烟测试*:正常搜搜功能
def test_search_1(self):
    """
    操作步骤:
    1,点击放大镜
    2,点击高级搜索功能
    3,点击搜索框后输入文本“selenium”
    4,点击搜索按钮
    5,得到实际结果后与预期结果作比较(assert)
    :return:
    """
    self.driver.find_element(By.CSS_SELECTOR,'.d-icon-search').click()
    self.driver.find_element(By.CSS_SELECTOR,".d-icon-sliders-h").click()
    self.driver.find_element(By.CSS_SELECTOR,".full-page-search").click()
    self.driver.find_element(By.CSS_SELECTOR,".full-page-search").send_keys("selenium")
    self.driver.find_element(By.CSS_SELECTOR,".search-cta").click()
    res_element = self.driver.find_element(By.CLASS_NAME,"topic-title")
    # 截图操作
    self.driver.save_screenshot("image1.png")
    # 放入测试报告中
    allure.attach.file("image1.png",name="ceshi_1",attachment_type=allure.attachment_type.PNG)
    assert "selenium" in res_element.text

# 异常测试点*:输入空文本
def test_search_2(self):
    """
    1,点击放大镜
    2,点击高级搜索功能
    3,点击搜索框后输入空文本
    5,点击搜索按钮
    5,得到实际结果后与预期结果作比较(assert)
    :return:
    """
    self.driver.find_element(By.CSS_SELECTOR, '.d-icon-search').click()
    self.driver.find_element(By.CSS_SELECTOR, ".d-icon-sliders-h").click()
    self.driver.find_element(By.CSS_SELECTOR, ".full-page-search").click()
    self.driver.find_element(By.CSS_SELECTOR, ".full-page-search").send_keys("")
    self.driver.find_element(By.CSS_SELECTOR, ".search-cta").click()
    res_element = self.driver.find_element(By.CSS_SELECTOR,".fps-invalid").text
    # 截图操作
    self.driver.save_screenshot("image2.png")
    # 把截图放入报告中
    allure.attach.file("image2.png", name="ceshi_2", attachment_type=allure.attachment_type.PNG)
    assert "您的搜索词过短。" == res_element

# 异常测试点:输入为特殊字符
def test_search_3(self):
    """
    1,点击放大镜
    2,点击高级搜索功能
    3,点击搜索框后输入文本“……*&……%……&%¥”
    5,点击搜索按钮
    5,得到实际结果后与预期结果作比较(assert)
    :return:
    """
    self.driver.find_element(By.CSS_SELECTOR, '.d-icon-search').click()
    self.driver.find_element(By.CSS_SELECTOR, ".d-icon-sliders-h").click()
    self.driver.find_element(By.CSS_SELECTOR, ".full-page-search").click()
    self.driver.find_element(By.CSS_SELECTOR, ".full-page-search").send_keys("……*&……%……&%¥")
    self.driver.find_element(By.CSS_SELECTOR, ".search-cta").click()
    res_element = self.driver.find_element(By.CSS_SELECTOR, ".search-advanced").text
    # 截图操作
    self.driver.save_screenshot("image3.png")
    # 把截图放入报告中
    allure.attach.file("image3.png", name="ceshi_2", attachment_type=allure.attachment_type.PNG)
    assert "找不到结果。" in res_element

# 异常测试点:输入为不存在的数据
def test_search_4(self):
    """
    1,点击放大镜
    2,点击高级搜索功能
    3,点击搜索框后输入文本“程序员如何不掉头发”
    5,点击搜索按钮
    5,得到实际结果后与预期结果作比较(assert)
    :return:
    """
    self.driver.find_element(By.CSS_SELECTOR, '.d-icon-search').click()
    self.driver.find_element(By.CSS_SELECTOR, ".d-icon-sliders-h").click()
    self.driver.find_element(By.CSS_SELECTOR, ".full-page-search").click()
    self.driver.find_element(By.CSS_SELECTOR, ".full-page-search").send_keys("程序员如何不掉头发")
    self.driver.find_element(By.CSS_SELECTOR, ".search-cta").click()
    res_element = self.driver.find_element(By.CSS_SELECTOR, ".search-advanced").text
    # 截图操作
    self.driver.save_screenshot("image4.png")
    # 把截图放入报告中
    allure.attach.file("image4.png", name="ceshi_2", attachment_type=allure.attachment_type.PNG)
    assert "找不到结果。" in res_element

# 异常测试点:输入字符超出范围还不知道怎么写,不清楚范围是多大怎么样才算超出范围