骑士注册 登录
Linux 中国◆开源社区 返回首页

longtou的个人空间 https://linux.cn/space/32657 [收藏] [复制] [分享] [RSS]

日志

基于selenium+unittest的自动化测试-unittest

已有 113 次阅读2019-08-23 17:10 |个人分类:测试

基本结构

# 导入unittest模块
import unittest
from selenium import webdriver
from time import sleep
from config import info
from login import Login

# 创建Test_XXX类,继承unittest的TestCase类
class Test_Login(unittest.TestCase):
    # setUP方法用于每一个测试用例执行前的初始化工作,这里设置从配置文件中获取浏览器类型并启动对应webdriver,配置浏览器窗口大小,设置隐式等待时间,加载测试网址
    def setUp(self):
        if info().browser == "Firefox":
            self.driver = webdriver.Firefox()
        elif info().browser == "Chrome":
            self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(5)
        self.driver.get(info().url)
        sleep(1)
        
    # 定义具体的测试用例,这里为登录测试
    def test_login(self):
        Login(self.driver).login()
        flag = self.driver.find_element_by_xpath("//span[contains(.,'首页')]")
        # 断言方法,判断期望元素是否显示
        self.assertTrue(flag.is_displayed())
        
    # 定义具体的测试用例,这里为登出测试
    def test_logout(self):
        Login(self.driver).logout()
        flag = self.driver.find_element_by_xpath("//h6[contains(.,'欢迎登陆')]")
        断言方法,判断期望元素是否显示
        self.assertTrue(flag.is_displayed())
    
    # 继续添加测试用例 
    def test_XXX(self):
        pass
        
    # 相对于setUP,这里的tearDown作为收尾工作,即每一个测试case执行结束后需要执行的工作,这里设置为关闭窗口
    def tearDown(self):
        sleep(1)
        self.driver.quit()

if __name__ == "__main__":
    # unittest提供的全局main()方法,可以将每个测试用例变成直接运行的测试脚本
    unittest.main()

基本概念

  • Test Case:测试用例
  • Test Suite:多个测试用例组成的测试套件
  • Test Runner:测试执行方法
  • Test Fixture:测试用例初始化与销毁,即:setUP和tearDown

用例编排

import unittest
# 导入HTML报表模块
from HTMLTestRunner import HTMLTestRunner
# 导入测试用例
import test_login
import test_index

# 初始化TestSuite实例,构建测试套件
suite = unittest.TestSuite()

# 按照执行顺序将测试用例添加到测试套件中
# 登录登出验证
suite.addTest(test_login.Test_Login("test_login"))
suite.addTest(test_login.Test_Login("test_logout"))
# 首页 数据抓取
suite.addTest(test_index.TestIndex("test_index"))
# 语言切换
suite.addTest(test_index.TestIndex("test_language"))
# 产品信息
suite.addTest(test_index.TestIndex("test_product"))
# 切换主题
suite.addTest(test_index.TestIndex("test_theme"))

if __name__ == "__main__":
    now = time.strftime("%Y-%m-%d" + "-" + "%H_%M_%S")
    # 定义报表文件
    filename = "reports/" + now + "_user.html"
    fp = open(filename, 'wb')
    # 通过HTMLTestRunner类定义定义测试报告
    runner = HTMLTestRunner(stream=fp, title='测试报告', description='用例执行情况:')
    # 运行测试套件
    runner.run(suite)

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。