Selenium30-集成unittest

集成unittest原因

  • 原来的demoxxxx.py使用瀑布模型(线性模式)进行代码编写,复用性差、代码冗余、维护成本较高

unittest

  • 是Python语言自带的单元测试框架,做功能自动化和接口测试时也都可以使用这样的框架来管理代码
  • unittest的主要作用有
    • 更方便管理测试用例实现代码
    • 提供了大量的断言方法,可以帮助我们快速检查界面上生成的数据或控件状态
    • 有丰富的日志,有利于代码的调试
    • 批量运行
    • 测试结果报告清晰明了

selenium集成unittest框架步骤:

  • 新建测试模块代码文件:选择Python unittest类型

  • 新建setUp和tearDown的方法

    • setUp做测试准备工作,比如启动浏览器,设置隐式等待超时时间等
    • tearDown做测试收尾工作,比如关闭浏览器等
    • 注意:为了让driver变量在整个类里所有方法中都可以使用,需要在变量名前加self,变成self.driver的写法
  • 新建test开头的测试方法

    • 一个类里可以有一到多个测试方法,主要实现业务操作步骤和断言
    • 也需要使用self.driver的写法访问成员变量
"""
	用例1
	ECsho前台首页
	不输入关键字,点击搜索,等待4秒
	切换到弹出的消息框,点击确定
	
	用例2
	ECsho前台首页
	输入关键字"hello",点击搜索,等待4秒
"""
import unittest
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
class MyTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.driver = webdriver.Firfox() # 启动浏览器
        self.driver.implicitly_wait(15) # 隐式等待

    def tearDown(self) -> None:
        self.driver.quit() # 关闭浏览器



    def test_01(self):
        self.driver.get("http://localhost/upload/index.php")
        # self.driver.find_element(By.ID,'keyword')
        self.driver.find_element(By.NAME, 'imageField').click()
        sleep(4)
        a2 = self.driver.switch_to.alert # 切换消息框
        t2 = a2.text
        print(t2)
        a2.accept() # 点击 确定 关闭
        sleep(2)

    def test_02(self):
        self.driver.get("http://localhost/upload/index.php")
        self.driver.find_element(By.ID,'keyword').send_keys("hello")
        self.driver.find_element(By.NAME, 'imageField').click()
        sleep(4)
if __name__ == '__main__':
    unittest.main()

集成训练




集成案例优化

  • 合并测试方法、提取测试数据到外部文件
    • 准备一个数据文件search_file_8007.csv,存储三组测试数据
    • 把三个测试方法test_search_01、test_search_02、test_search_03合并为一个测试方法test_search,读取csv文件里的测试数据,判断测试数据是什么情况的测试数据,做不同的操作。

posted @ 2022-12-27 14:11  暄总-tester  阅读(57)  评论(0)    收藏  举报