今天我们讲解在python中如何使用unittest框架实现UI自动化,对于如何使用webdriver的API进行网页的操作今天不再赘述,错过的小伙伴请戳下方链接直达~~

1.unittest单元测试框架

- 为什么要使用单元测试框架?
 使用单元测试框架可以规范测试用例的编写,方便用例的管理与维护为测试报告提供数据。
2.unittest单元测试框架中的概念
- 测试用例
 一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。unittest 提供一个基类:TestCase,用于新建测试用例。
- 测试套件
 test suite 是一系列的测试用例,或测试套件,或两者皆有。它用于归档需要一起执行的测试。
- 测试运行器(test runner)
 test runner 是一个用于执行和输出测试结果的组件。这个运行器可能使用图形接口、文本接口,或返回一个特定的值表示运行测试的结果。
3.前期准备
下载webdriver,选择对应的浏览器驱动进行下载(本文演示基于谷歌驱动)
- chromedriver.exe:https://npm.taobao.org/mirrors/chromedriver/
- Firefox全历史版本下载:http://ftp.mozilla.org/pub/firefox/releases/
- geckodriver.exe:
https://github.com/mozilla/geckodriver/releases
- 全驱动下载链接:
https://www.selenium.dev/downloads/
驱动下载完成后,将驱动包放在python.exe同级目录下
4.样例
运行结果分析:
#导入Webdriver,UI自动化主要靠Webdriver实现
from selenium import webdriver
#导入时间模块
import time
#导入unittest单元测试模块
import unittest
#定义百度网页登录的测试用例集
class BaiduLogin(unittest.TestCase):
    #定义Setup,用于初始化测试固件。本次设置的含义为在执行每个测试用例之前,打开浏览器,设置url为https://www.baidu.com
    def setUp(self):
        self.url = 'https://www.baidu.com/'
        self.browser = webdriver.Chrome()
    #定义teardown,用于销毁测试固件。本次设置的含义为在执行每个测试用例之后,关闭浏览器
    #所以当前脚本的执行顺序为:
    ##setup-->test_001_query-->teardown-->setup-->test_002_login-->teardown
    def tearDown(self):
      self.browser.quit()
    def test_001_query(self):
     #创建一个名称为test_query_001的测试用例,在浏览器中打开百度首页    
     self.browser.get(self.url)
     #将窗口最大化    
     self.browser.maximize_window()
     #在搜索框中输入关键词“123”
     self.browser.find_element_by_id('kw').send_keys('123')
     #点击“百度一下”按钮
     self.browser.find_element_by_id('su').click()
     #print("查询成功")
     #等待3S,查看页面返回结果
     time.sleep(3)
    def test_002_login(self):
     #创建一个名称为test_login_002的用例,在浏览器中打开百度首页
     self.browser.get(self.url)
     #将窗口最大化
     self.browser.maximize_window() 
     #点击“登录”按钮 
     self.browser.find_element_by_id('s-top-loginbtn').click()
     #等待2S
     time.sleep(2)
     #切换登录方式为“用户名登录”
     self.browser.find_element_by_id("TANGRAM__PSP_11__footerULoginBtn").click()
     #清除用户名输入框中之前输入过的内容
     self.browser.find_element_by_name("userName").clear()
     #输入用户名“12345678910”
     self.browser.find_element_by_name("userName").send_keys("12345678910")
     #输入密码“123456”
     self.browser.find_element_by_name("password").send_keys("123456")
     #点击登录按钮
     self.browser.find_element_by_id("TANGRAM__PSP_11__submit").click()
     #手动拖动验证码,如果时间不够,可以增加等待时长
     time.sleep(10)
     #print("登录完成")
if __name__ == '__main__':
    unittest.main()
结果中出现两个“·”,代表两条用例都执行成功;
如果返回的结果中带有“E”,则表示对应的用例中有报错,需要定位脚本中是否存在问题;、
如果返回的结果为“F”,则表示对应的用例执行失败;
如果返回的结果为“S”,表示用例跳过未执行。如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

最后基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源【免费】。











