首页 > 编程语言 >Selenium + Python 自动化测试10(unittest概念)

Selenium + Python 自动化测试10(unittest概念)

时间:2024-08-11 17:52:07浏览次数:15  
标签:10 name 登录 Python unittest driver password self

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

上几篇我们讨论了元素的定位方法、操作方法以及一些特殊元素的操作。

         在实际的测试项目组中每个模块会写多条案例,如第一条用例那里我们的登录。登录的话就可以有多条案例。那我们怎么写才能更方便呢?python有没有自带的框架能够使用呢?

答案是肯定的。使用unittest来解决。

        还是以此网站来举例:Swag Labs

1、unittest基本结构

如下代码所示:

class LoginTest(unittest.TestCase):

    def setUp(self):

        self.driver = driverfunc()

        print("登录测试开始")



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

    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

        # 验证标题显示:Swag Labs

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

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





    def tearDown(self)#浏览器退出

        self.driver.quit()

        print("登录测试结束")



if __name__ =='__main__':

    unittest.main()

        我们上面的代码已经使用了unitest。

         unittest 即单元测试,单元测试负责对最小的软件设计单元(模块)进行验证。有时候也叫白盒测试。这里unittest指单元测试框架,是python语言自带的。

基本结构:

 class LoginTest(unittest.TestCase):  #以登录为例这里写的类
    def setUp(self):   #测试用例执行前的初始化工作
        self.driver = driverfunc()
        print("登录测试开始")

    #实际的测试用例,每个模块一条用例写一个函数
   
def test_login_Y(self):
       
driver = self.driver
    
       xxxx,下面一般是断言
        self.assertEqual("Products", UIResult, "密码正确登录验证失败,fail")

    def tearDown(self)#与初始化工作相对应,执行一条用例后处理
       
self.driver.quit()
        print("登录测试结束"
 

2、多条用例的执行

         现在加入我用写了一条登录失败的用例,要怎么写呢?聪明的你可能会想到在写一个函数。如下即是我们新增的案例。

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

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")

执行我们整个脚本文件:login.py

检查执行的结果,我们确认执行了两条的测试案例,并且都是成功的。如下图:

        这个是为什么呢?因为unittest 提供了main()方法,使用它可以方便地将一个单元测试模块变成可以直接运行的测试脚本。main()方法使用TestLoader 类来搜索所包含在该模块中以test命名开通的测试方法,并自动执行它们。即:

        if __name__ =='__main__':
           
unittest.main()

以上就是unittest 一个简单的理解。

每天进步一点点,加油!

标签:10,name,登录,Python,unittest,driver,password,self
From: https://blog.csdn.net/weixin_45999406/article/details/141097066

相关文章

  • python毕业设计基于Django的汽车租赁系统
    文末获取资源,收藏关注不迷路文章目录一、项目介绍二、主要使用技术三、研究内容四、核心代码五、文章目录一、项目介绍随着经济的飞速发展和人们生活水平的显著提升,汽车已经成为现代生活中不可或缺的重要交通工具。然而,随着城市化进程的加快,交通拥堵、停车难以及高......
  • 「LeetCode Top100」之滑动窗口
    3.无重复字符的最长子串题目链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/?envType=study-plan-v2&envId=top-100-liked题目难度:中等标签:哈希表、字符串、滑动窗口题目状态:学习题解思路:滑动窗口的思路,也就是维持一个无......
  • 【学习笔记】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():......
  • 华为昇腾310 AI 参数 - 310P3
    一张图详解华为昇腾310AI芯片:自研达芬奇架构算力和能效比大幅提升来源:快科技10月10日,华为在全联接大会2018上,首次宣布了华为的AI战略以及全栈解决方案。与此同时,华为发布了自研云端AI芯片“昇腾(Ascend)”系列,基于达芬奇架构,首批推出7nm的昇腾910以及12nm的昇腾310。其中,......
  • 使用条件语句登录QQ(Pythonn实验实训项目)
    实验目的1、掌握变量的创建方法及变量赋值运算的使用方法;2、掌握的掌握if-elif--else条件语句和循环语句的嵌套使用;3、掌握比较运算符的应用;4、掌握输入语句的使用方法;5、掌握continue和break语句的用法。二、实验内容使用条件语句实现QQ登录:若用户名和密码都输入正确,则......
  • 搭建python私有仓库
    1.创建帐号密码文件,并添加内容touch/opt/pyserver/.htpasswdecho"username:password">/opt/pyserver/.htpasswd2.创建包路径mkdir/opt/pyserver/packages3.创建私有仓库#不带转发的命令dockerrun--namepypi--restartalways-v/opt/pyserver/packages:/d......
  • VDI/VDE 2643 Part3 2008:10
    [!NOTE]原始PDF链接:https://www.doc88.com/p-50359701027029.htmlOptical3D-measuringsystemsMultipleviewsystemsbasedonareascanningPreliminarynoteThecontentofthisguidelinehasbeendevelopedinstrictaccordancewiththerequirementsandrecomme......
  • 探索Python中的插入排序算法
    探索Python中的插入排序算法插入排序(InsertionSort)是一种简单直观的排序算法。虽然在大规模数据集上效率不如一些高级排序算法,但插入排序在处理小规模数据集或部分有序的数据时表现非常优秀。本文将介绍插入排序的工作原理、实现方法以及它的时间复杂度。插入排序的工作......
  • 使用 Python 爬取豆瓣电影 Top250 多页数据
    使用Python爬取豆瓣电影Top250多页数据创建时间:2024-08-11一、完整代码'''抓取单贞数据中的评分简介评价人数将上面的改为多页https://movie.douban.com/top250?start=0'''importrequestsfromlxmlimportetreeheader={'User-Agent':'Mozilla/5.0......