记录在听黑马课的时候的笔记以及课堂上练习的代码,文章图源于我在听课的时候所截的屏,所以有些不清晰,请见谅。


目录

手工AI测试

测试基础

AI工具应用

DeepSeek编写测试用例

AI测试设计

DeepSeek描述缺陷

DeepSeek编写测试报告

AI自动化测试

自动化测试基础

环境搭建

快速入门

Pycharm集成ai工具

DeepSeek编写登录自动化测试脚本

判断自动化测试结果是否通过(断言)

pytest框架

AI自动化测试报告


手工AI测试

测试基础

AI工具应用

DeepSeek编写测试用例

专业的提示词:

AI测试设计

DeepSeek描述缺陷

D老师生成的缺陷用例

缺陷报告


Bug 标题:登录模块-使用50字符长度的用户名登录时页面无响应

当前指派:开发负责人(请根据实际项目分配调整)

Bug 类型:功能缺陷

严重程度:严重

优先级:高

重现步骤

  1. 注册一个用户名为50个字符的用户(如:0123456789012345678901234567890123456789012345678a);
  2. 打开登录页面:https://hmshop-test.itheima.net/Home/user/login.html
  3. 输入已注册的50字符用户名、正确密码(如:Tes11234)和验证码(如:8888);
  4. 点击“登录”按钮;
  5. 观察页面反应。

预期结果:登录成功,跳转到用户主页或提示登录成功。

实际结果:点击登录按钮后页面无任何响应,无跳转、无提示、无错误信息。

附件:(请在禅道中上传以下内容)

  • 截图1:输入50字符用户名的登录页面
  • 截图2:点击登录后页面无响应的状态
  • 录屏(可选):展示操作全过程及页面无响应现象

备注
该问题影响用户正常登录功能,属于边界值异常处理缺失,建议开发检查用户名长度校验与后端接口处理逻辑。

粘到禅道中:

开发拿到之后:

点击缺陷标题进入主页:

点击确认

如果解决完之后:

之后测试人员再按照步骤进行测试是否真的已经解决,若已解决则点击关闭bug:

DeepSeek编写测试报告

AI自动化测试

自动化测试基础

环境搭建

在pycharm中安装,会安装到当前项目文件位置,不推荐用cmd来安装

快速入门

from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 配置浏览器选项
edge_options = Options()
# 禁用通知,避免弹窗干扰
prefs = {
    "profile.default_content_setting_values.notifications": 2,
    "credentials_enable_service": False,
    "profile.password_manager_enabled": False
}
edge_options.add_experimental_option("prefs", prefs)
# 可选:无头模式(不显示浏览器界面)
# edge_options.add_argument("--headless")

# 1. 启动Edge浏览器(带配置)
driver = webdriver.Edge(options=edge_options)
driver.maximize_window()

try:
    # 2. 打开百度首页
    driver.get("https://www.baidu.com")

    wait = WebDriverWait(driver, 10)

    # 3. 直接使用JavaScript定位和操作(最稳健的方法)
    # 输入搜索词
    search_script = """
    document.getElementById('kw').value = '北京烤鸭';
    """
    driver.execute_script(search_script)

    # 点击搜索按钮
    click_script = """
    document.getElementById('su').click();
    """
    driver.execute_script(click_script)

    # 等待搜索结果
    import time

    time.sleep(10)

    print("搜索成功!")
    print("页面标题:", driver.title)
    print("页面URL:", driver.current_url)

except Exception as e:
    print(f"发生错误:{str(e)}")

finally:
    # 5. 关闭浏览器
    driver.quit()

Pycharm集成ai工具

DeepSeek编写登录自动化测试脚本

我们用ai写好后,点击运行发现它报错输出提示信息,Unable to locate element: {"method":"css selector","selector":"input[type='submit']"}找不到登录提交按钮,这时候我们就需要利用浏览器查看按钮对应的值为什么名字

更正了这个标签错误,实现成功登录:

# 导入selenium webdriver模块,用于控制浏览器
from selenium import webdriver
# 导入WebDriverWait和expected_conditions模块,用于显式等待
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 导入By模块,用于定位元素
from selenium.webdriver.common.by import By
# 导入time模块,用于添加等待时间
import time

def test_login():
    """
    自动化测试登录功能
    测试步骤:
    1. 输入用户名 13154645123
    2. 输入密码 123456
    3. 输入图片验证码 8888
    4. 点击登录按钮
    """

    # 1. 启动Edge浏览器
    driver = webdriver.Edge()

    try:
        # 打开登录页面
        driver.get("https://hmshop-test.itheima.net/Home/user/login.html")

        # 等待页面加载完成
        time.sleep(2)

        # 1. 查找用户名输入框,输入用户名 13154645123
        # 使用CSS选择器定位用户名输入框
        username_input = driver.find_element(By.CSS_SELECTOR, "input[name='username']")
        # 清空输入框内容
        username_input.clear()
        # 输入用户名
        username_input.send_keys("13154645123")

        # 2. 查找密码输入框,输入密码 123456
        # 使用CSS选择器定位密码输入框
        password_input = driver.find_element(By.CSS_SELECTOR, "input[name='password']")
        # 清空输入框内容
        password_input.clear()
        # 输入密码
        password_input.send_keys("123456")

        # 3. 查找验证码输入框,输入图片验证码 8888
        # 使用CSS选择器定位验证码输入框
        verify_code_input = driver.find_element(By.CSS_SELECTOR, "input[name='verify_code']")
        # 清空输入框内容
        verify_code_input.clear()
        # 输入验证码
        verify_code_input.send_keys("8888")

        # 4. 查找登录按钮,点击登录
        # 使用CSS选择器定位登录按钮
        login_button = driver.find_element(By.CSS_SELECTOR, "#loginform > div > div.login_bnt > a")

        # 点击登录按钮
        login_button.click()

        # 等待页面跳转
        time.sleep(3)

        # 输出当前页面URL验证登录是否成功
        print("登录后的页面URL:", driver.current_url)

    except Exception as e:
        print(f"登录过程中发生错误: {e}")
    finally:
        # 关闭浏览器
        driver.quit()

# 执行测试函数
if __name__ == "__main__":
    test_login()

判断自动化测试结果是否通过(断言)

# 导入selenium webdriver模块,用于控制浏览器
from selenium import webdriver
# 导入WebDriverWait和expected_conditions模块,用于显式等待
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 导入By模块,用于定位元素
from selenium.webdriver.common.by import By
# 导入time模块,用于添加等待时间
import time

def test_login():
    """
    自动化测试登录功能
    测试步骤:
    1. 输入用户名 13154645123
    2. 输入密码 123456
    3. 输入图片验证码 8888
    4. 点击登录按钮
    """

    # 1. 启动Edge浏览器
    driver = webdriver.Edge()

    try:
        # 打开登录页面
        driver.get("https://hmshop-test.itheima.net/Home/user/login.html")

        # 等待页面加载完成
        time.sleep(2)

        # 1. 查找用户名输入框,输入用户名 13154645123
        # 使用CSS选择器定位用户名输入框
        username_input = driver.find_element(By.CSS_SELECTOR, "input[name='username']")
        # 清空输入框内容
        username_input.clear()
        # 输入用户名
        username_input.send_keys("13154645123")

        # 2. 查找密码输入框,输入密码 123456
        # 使用CSS选择器定位密码输入框
        password_input = driver.find_element(By.CSS_SELECTOR, "input[name='password']")
        # 清空输入框内容
        password_input.clear()
        # 输入密码
        password_input.send_keys("123456")

        # 3. 查找验证码输入框,输入图片验证码 8888
        # 使用CSS选择器定位验证码输入框
        verify_code_input = driver.find_element(By.CSS_SELECTOR, "input[name='verify_code']")
        # 清空输入框内容
        verify_code_input.clear()
        # 输入验证码
        verify_code_input.send_keys("8888")

        # 4. 查找登录按钮,点击登录
        # 使用CSS选择器定位登录按钮
        login_button = driver.find_element(By.CSS_SELECTOR, "#loginform > div > div.login_bnt > a")

        # 点击登录按钮
        login_button.click()

        # 等待页面跳转
        time.sleep(3)

        #暂停两秒,断言昵称为13154645123,断言内容要放到try中
        time.sleep(2)
        assert driver.find_element(By.CSS_SELECTOR, ".userinfo").text == "13154645123"
        print("登录成功")
        time.sleep(2)

        # 输出当前页面URL验证登录是否成功
        print("登录后的页面URL:", driver.current_url)

    except Exception as e:
        print(f"登录过程中发生错误: {e}")
    finally:
        # 关闭浏览器
        driver.quit()

# 执行测试函数
if __name__ == "__main__":
    test_login()

pytest框架

安装成功:

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time


class TestTpshopOrderQuery:

    @pytest.fixture(scope="function")
    def driver(self):
        """每个测试用例都使用独立的浏览器实例"""
        driver = webdriver.Edge()
        driver.maximize_window()
        driver.implicitly_wait(10)  # 添加隐式等待
        yield driver
        driver.quit()

    def login_user(self, driver):
        """封装登录函数"""
        driver.get("https://hmshop-test.itheima.net/Home/user/login.html")

        # 使用显式等待确保页面元素加载完成
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='username']"))
        )

        # 更灵活的元素查找方式
        # 方式1:通过name属性
        username = driver.find_element(By.NAME, "username")
        # 方式2:通过CSS选择器
        # username = driver.find_element(By.CSS_SELECTOR, "input[name='username']")
        username.clear()
        username.send_keys("13154645123")

        password = driver.find_element(By.NAME, "password")
        password.clear()
        password.send_keys("123456")

        # 验证码输入框
        verify_code = driver.find_element(By.CSS_SELECTOR, "input[name='verify_code']")
        verify_code.clear()
        verify_code.send_keys("8888")

        # 登录按钮
        login_btn = driver.find_element(By.CSS_SELECTOR, ".login-bnt a, .login_bnt a, button[type='submit']")
        login_btn.click()

        # 等待登录成功
        WebDriverWait(driver, 10).until(
            EC.url_contains("Home/User/index.html")
        )

        return driver

    def test_query_order(self, driver):
        """测试登录"""
        self.login_user(driver)

        # 验证登录成功
        assert "Home/User/index.html" in driver.current_url
        print("测试用例1:登录验证成功")

    def test_actual_order_query(self, driver):
        """测试订单查询"""
        # 先登录
        self.login_user(driver)

        print("测试用例2:开始测试订单查询")

        # 查找订单菜单或链接
        # 尝试多种可能的选择器
        order_selectors = [
            "a[href*='order']",
            ".my-order",
            "a:contains('我的订单')",
            "//a[contains(text(), '我的订单')]",  # XPath
        ]

        order_link = None
        for selector in order_selectors:
            try:
                if selector.startswith("//"):
                    order_link = driver.find_element(By.XPATH, selector)
                else:
                    order_link = driver.find_element(By.CSS_SELECTOR, selector)
                break
            except:
                continue

        if order_link:
            order_link.click()
            print("点击了我的订单")
        else:
            # 如果找不到,直接访问订单页面URL
            driver.get("https://hmshop-test.itheima.net/Home/User/order_list.html")
            print("直接访问订单页面")

        time.sleep(2)
        print(f"当前页面标题: {driver.title}")
        print("测试用例2完成")


if __name__ == "__main__":
    pytest.main(["-v", "-s", __file__])  # 添加-s参数以查看print输出
# 导入所需模块
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time


class TestTpshopLogin:
    """Tpshop登录测试类"""

    @pytest.fixture(scope="function")
    def driver(self):
        """
        每个测试方法都重新创建和关闭浏览器
        """
        driver = webdriver.Edge()
        driver.maximize_window()
        driver.implicitly_wait(10)  # 添加隐式等待
        yield driver
        driver.quit()

    def test_login_success(self, driver):
        """测试登录功能"""
        # 1. 打开登录页面
        driver.get("https://hmshop-test.itheima.net/Home/user/login.html")
        time.sleep(2)

        # 2. 输入用户名
        username_input = driver.find_element(By.CSS_SELECTOR, "#username")
        username_input.clear()
        username_input.send_keys("13154645123")

        # 3. 输入密码
        password_input = driver.find_element(By.CSS_SELECTOR, "#password")
        password_input.clear()
        password_input.send_keys("123456")

        # 4. 输入验证码
        verify_code_input = driver.find_element(By.CSS_SELECTOR, "#verify_code")
        verify_code_input.clear()
        verify_code_input.send_keys("8888")

        # 5. 点击登录按钮
        login_button = driver.find_element(By.CSS_SELECTOR, "#loginform > div > div.login_bnt > a")
        login_button.click()

        # 6. 等待页面跳转,验证登录成功
        # 方法1:检查URL
        try:
            WebDriverWait(driver, 10).until(
                EC.url_contains("Home/User/index.html")
            )
            print("✅ 登录成功!跳转到用户中心页面")
            print(f"当前URL: {driver.current_url}")

        except:
            print("⚠️ 可能登录失败,检查当前页面...")
            print(f"当前URL: {driver.current_url}")
            print(f"页面标题: {driver.title}")

            # 如果URL不符合预期,检查页面标题或元素
            if "我的账户" in driver.title:
                print("✅ 通过页面标题验证登录成功")
            elif "用户中心" in driver.title:
                print("✅ 通过页面标题验证登录成功")
            else:
                # 检查页面是否有用户信息
                try:
                    user_info = driver.find_element(By.CSS_SELECTOR, ".user-info, .user_name, .userinfo")
                    print(f"✅ 找到用户信息元素: {user_info.text}")
                except:
                    print("❌ 未找到用户信息,登录可能失败")
                    # 截图保存以便查看
                    driver.save_screenshot("login_failure.png")
                    print("已保存截图: login_failure.png")

        # 最终断言验证
        assert "Home/User/index.html" in driver.current_url or "我的账户" in driver.title
        print("✅ 测试通过:登录成功验证完成")


if __name__ == "__main__":
    # 运行pytest测试
    pytest.main(["-v", "-s", __file__])

AI自动化测试报告


这篇文章就先更新到这里,接下来的内容可查看我的下一篇博客,感谢观看,希望对你有帮助。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐