web自动化系列-使用普通模式编写测试用例以及存在问题(十六)

在这里插入图片描述

前面已经把selenium的主要操作介绍完毕 ,接下来我们通过编写几条测试用例感受下selenium的用法 。

1.用例需求

还是以登录为例 ,需要实现的测试用例为 :

  • case1:输入正确的用户名和密码进行登录
  • case2 : 输入正确的用户名和错误的密码登录
  • case3 : 输入正确的用户名和空的密码进行登录

以上登录的操作步骤为 :

  1. 点击首页的’登录’按钮,进入登录页面
  2. 输入正确的用户名
  3. 输入错误的密码
  4. 输入验证码
  5. 点击登录按钮
  6. 获取提示信息,并验证其信息 。

2.具体代码

在这里我们使用uninttest编写以上的3条用例 。

import unittest
from selenium import webdriver
import time


class TestLogin(unittest.TestCase):

    def setUp(self) -> None:
        self.driver = webdriver.Chrome()
        self.driver.get("http://localhost")

    def tearDown(self) -> None:
        self.driver.quit()

    # case1 : 正确的用户名和正确的密码登录
    def test_login_success(self):
        # 1) 定位登录
        self.driver.find_element_by_link_text("登录").click()
        time.sleep(3)

        # 2) 输入用户名
        self.driver.find_element_by_id("username").send_keys("13988888888")

        # 3) 输入密码
        self.driver.find_element_by_name("password").send_keys("123456")

        # 4) 输入验证码
        self.driver.find_element_by_name("verify_code").send_keys("8888")

        time.sleep(1)

        # 5) 点击登录
        self.driver.find_element_by_class_name("J-login-submit").click()
        time.sleep(5)
        account_text = self.driver.find_element_by_link_text("13988888888").text
        self.assertEqual('13988888888',account_text)

    # case2 : 正确的用户名和错误的密码登录
    def test_password_is_wrong(self):
        # 1) 定位登录
        self.driver.find_element_by_link_text("登录").click()
        time.sleep(3)

        # 2) 输入用户名
        self.driver.find_element_by_id("username").send_keys("13988888888")

        # 3) 输入密码
        self.driver.find_element_by_name("password").send_keys("1234567")

        # 4) 输入验证码
        self.driver.find_element_by_name("verify_code").send_keys("8888")

        time.sleep(1)

        # 5) 点击登录
        self.driver.find_element_by_class_name("J-login-submit").click()
        time.sleep(3)
        password_error_msg = self.driver.find_element_by_class_name("layui-layer-content").text
        self.assertEqual("密码错误!",password_error_msg)

        
    # case3 : 正确的用户名和空的密码登录
    def test_password_is_null(self):
        # 1) 定位登录
        self.driver.find_element_by_link_text("登录").click()
        time.sleep(3)

        # 2) 输入用户名
        self.driver.find_element_by_id("username").send_keys("13988888888")

        # 3) 输入密码
        self.driver.find_element_by_name("password").send_keys("")

        # 4) 输入验证码
        self.driver.find_element_by_name("verify_code").send_keys("8888")

        time.sleep(1)

        # 5) 点击登录
        self.driver.find_element_by_class_name("J-login-submit").click()
        time.sleep(3)
        password_error_msg = self.driver.find_element_by_class_name("layui-layer-content").text
        
        
        self.assertEqual("密码不能为空!", password_error_msg)

3.具体问题

仔细观察的你 ,会发现以上编写方式是存在一些问题的 ,具体包括 :

  • 第一、代码步骤相同 ,只是数据不同 ,导致大量的冗余代码 ,一旦某一个步骤发生变化 ,就会导致全部的用例都跟着改变 。
  • 第二、同一元素对象也是多次被引用 ,比如定位输入用户名有3条用例都用到了 ,但若这个元素的属性或者值变了 ,同样需要改3处。
  • 第三、如果我将以上的操作封装为页面呢 ? 比如我把点击、输入框输入 、获取文本事件等都要开放给用户去编写 ,像编写Excel或者配置一样那样编写,又改如何解决呢 ?

那么 ,以上的三个问题又该如何解决呢 ?其实它们就是3个典型的问题 ,分别对应三个非常流行的技术 ,分别是 :

其中数据参数化已经介绍 ,这里不在赘述 ,剩下的po模型和关键字驱动放在后面章节介绍 。在这里插入图片描述

相关推荐

  1. web自动化(3)——项目实战之流程编写

    2024-05-12 20:54:03       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-12 20:54:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-12 20:54:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-12 20:54:03       82 阅读
  4. Python语言-面向对象

    2024-05-12 20:54:03       91 阅读

热门阅读

  1. 【编写控制手机压测的脚本】

    2024-05-12 20:54:03       35 阅读
  2. 23种设计模式学习导航

    2024-05-12 20:54:03       32 阅读
  3. 【K8s】Kubectl 常用命令梳理

    2024-05-12 20:54:03       27 阅读
  4. 9. 学习distribute by rand()

    2024-05-12 20:54:03       27 阅读
  5. C语言从头学03——介绍函数printf

    2024-05-12 20:54:03       33 阅读
  6. [Easy] leetcode-225/232 栈和队列的相互实现

    2024-05-12 20:54:03       32 阅读
  7. 力扣 139. 单词拆分 python AC

    2024-05-12 20:54:03       32 阅读
  8. MATLAB数值计算工具箱介绍

    2024-05-12 20:54:03       32 阅读
  9. Linux 系统中,nl命令用于计算文件中的行号

    2024-05-12 20:54:03       33 阅读