首页 > 编程语言 >Selenium + Python 自动化测试11(unittest组织用例)

Selenium + Python 自动化测试11(unittest组织用例)

时间:2024-08-11 17:52:28浏览次数:14  
标签:11 name Python unittest driver 测试 Test div password

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

上一篇我们讨论了unittest基本使用方法。

         本篇文章我们接着讲。一些概念和一些常用的构造测试集的方法。

1、基本概念

1)Test Case

         一个Test Case的实例就是一个测试用例。可以完成一整个的测试流程。包括测试前准备 测试环境的搭建(setUp)、实现测试过程的代码(run),以及测试后环境的还原(tearDown)。

单元测试的本质就是一个测试用例就是一个完整的测试单元,通过运行这个测试单元,可以对某个功能进行测试验证。

2)Test Suite

         一个功能一般需要多条测试案例,可以把多个测试用例集合在一起执行,这就产生了测试套件:Test Suite概念。可以通过addTest加载Test Case到Test Suite中执行。

3)Test Runner

         unittest 框架中,通过TextTestRunner 类提供的run()方法来执行Test Suite/Test Case,

Test Runner 可以使用图形界面、文本界面,返回一个特殊的值来表示测试执行的结果。

Test Fixture

         对一个测试用例环境的搭建和销毁就是一个Fixture。我们通过Test Case中setUp、tearDown来实现。

2、Test Suite 用法举例

1)我们先准备 2条测试用例

下面是我们写的登录两条用例:

#输入正确的密码登录成功测试

def test_login_Y(self):

    driver = self.driver

    username = "standard_user"

    password = "secret_sauce"

    print("登录的用户名是:%s,密码是:%s"%(username,password))

    #打开浏览器,并最大化

    driver.get("https://www.saucedemo.com/")

    driver.maximize_window()

    time.sleep(3)



    #输入用户名,

    driver.find_element_by_name("user-name").send_keys(username)  # by name 定位

    #输入密码

    driver.find_element_by_name("password").send_keys(password)  # by name 定位

    #点击登录按钮

    driver.find_element_by_id("login-button").click()  # by ID 定位



    time.sleep(3)

    #加入断言  //*[@id="header_container"]/div[1]/div[2]/div

    # 验证有显示:Products

    UIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').text

    self.assertEqual("Products", UIResult, "密码正确登录验证失败,fail")



# 输入错误的密码登录失败测试

def test_login_N(self):

    driver = self.driver

    username = "standard_user"

    password = "secret_NG"

    print("登录的用户名是:%s,密码是:%s" % (username, password))

    # 打开浏览器,并最大化

    driver.get("https://www.saucedemo.com/")

    driver.maximize_window()

    time.sleep(3)



    # 输入用户名,

    driver.find_element_by_name("user-name").send_keys(username)  # by name 定位

    # 输入密码

    driver.find_element_by_name("password").send_keys(password)  # by name 定位

    # 点击登录按钮

    driver.find_element_by_id("login-button").click()  # by ID 定位



    time.sleep(3)

    # 加入断言  //*[@id="header_container"]/div[1]/div[2]/div

    # 验证有报错显示:

    UIResult = driver.find_element_by_xpath('//*[@id="login_button_container"]/div/form/div[3]/h3').text

    self.assertEqual("Epic sadface: Username and password do not match any user in this service", UIResult, "密码错误登录验证失败,fail")

下面我们把它折叠起来就比较容易看出:两条用例

2)下面我们构造测试用例集
if __name__ =='__main__':

    #unittest.main()

    #构造测试用例集

    suite=unittest.TestSuite()

    suite.addTest(LoginTest('test_login_Y'))

    suite.addTest(LoginTest('test_login_N'))
    

    #执行测试

    runner=unittest.TextTestRunner()

    runner.run(suite)

连一起前面的代码执行:

查看下面的测试结果,可以看到执行了2条案例,也有一个简单的结果呈现。

今天就先讲到这里了。

每天进步一点点,加油!

标签:11,name,Python,unittest,driver,测试,Test,div,password
From: https://blog.csdn.net/weixin_45999406/article/details/141108870

相关文章

  • Selenium + Python 自动化测试10(unittest概念)
            我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。上几篇我们讨论了元素的定位方法、操作方法以及一些特殊元素的操作。        在实际的测试项目组中每个模块会写多条案例,如第一条用例那里我们的登录。登录的话就可以有多条......
  • python毕业设计基于Django的汽车租赁系统
    文末获取资源,收藏关注不迷路文章目录一、项目介绍二、主要使用技术三、研究内容四、核心代码五、文章目录一、项目介绍随着经济的飞速发展和人们生活水平的显著提升,汽车已经成为现代生活中不可或缺的重要交通工具。然而,随着城市化进程的加快,交通拥堵、停车难以及高......
  • 【学习笔记】Matlab和python双语言的学习(图论最短路径)
    文章目录前言一、图论基本概念示例二、代码实现----Matlab三、代码实现----python总结前言通过模型算法,熟练对Matlab和python的应用。学习视频链接:https://www.bilibili.com/video/BV1EK41187QF?p=36&vd_source=67471d3a1b4f517b7a7964093e62f7e6一、图论图论(G......
  • 21:Python函数全局变量和局部变量
    #全局变量与局部变量,全局变量大写,局部变量小写NAME='ladfs'#定义全局变量,全局作用域顶格defchange_name():print('change_name',NAME)#调用全局变量change_name()#全局变量与局部变量NAME='ladfs'#定义全局变量defchange_name():......
  • sonarqube-9.9.6.92038 安装与启动 , Windows11
    使用JDK17,并且9000端口没有被占用使用默认H2数据库,那么conf/sonar.properties不需要修改,一句都不要改;启动启动成功 访问:http://localhost:9000/,用户名/密码:admin/admin  教程: ......
  • 0811day04
    使用格式化输出的三种方式实现以下输出(name换成自己的名字,既得修改身高体重,不要厚颜无耻)name='Nick'height=180weight=140#"Mynameis'Nick',myheightis180,myweightis140"name='Nick'height=180weight=140print(f"Mynameis{na......
  • 使用条件语句登录QQ(Pythonn实验实训项目)
    实验目的1、掌握变量的创建方法及变量赋值运算的使用方法;2、掌握的掌握if-elif--else条件语句和循环语句的嵌套使用;3、掌握比较运算符的应用;4、掌握输入语句的使用方法;5、掌握continue和break语句的用法。二、实验内容使用条件语句实现QQ登录:若用户名和密码都输入正确,则......
  • 注册无需窗口全局常用热键快捷键 2024年8月11日
    注册无需窗口全局常用热键快捷键2024年8月11日 注册无需窗口全局常用热键快捷键2024年8月11日REMC:\Prog\_一键打包成exe\一键打包成exe.batREM此批处理脚本文件最后编辑日期2022年9月23日set/ay=%date:~,4%,mo=1%date:~5,2%%%100,d=1%date:~8,2%%%100,h=%time:......
  • 搭建python私有仓库
    1.创建帐号密码文件,并添加内容touch/opt/pyserver/.htpasswdecho"username:password">/opt/pyserver/.htpasswd2.创建包路径mkdir/opt/pyserver/packages3.创建私有仓库#不带转发的命令dockerrun--namepypi--restartalways-v/opt/pyserver/packages:/d......
  • 探索Python中的插入排序算法
    探索Python中的插入排序算法插入排序(InsertionSort)是一种简单直观的排序算法。虽然在大规模数据集上效率不如一些高级排序算法,但插入排序在处理小规模数据集或部分有序的数据时表现非常优秀。本文将介绍插入排序的工作原理、实现方法以及它的时间复杂度。插入排序的工作......