重写__init__:参数化unittest只开一次浏览器,并生成HTML报告

本教程是在上一篇基础上的拓展。
https://blog.csdn.net/weixin_42801714/article/details/116166754

使用@classmethod装饰器能够实现不同testcase运行时只开一次浏览器,但是对于整个class参数化的情况,依然会在每次传入一次case时打开一次浏览器。重写__init__可以实现在程序运行全过程只打开一次浏览器。

具体实现代码如下:

# -*- coding: utf-8 -*-
# @FileName: config.py

from selenium import webdriver

driver_type = webdriver.Chrome
driver = None
web_url = "https://www.baidu.com"
# -*- coding: utf-8 -*-
# @FileName: webtest_fx.py

import unittest
import paramunittest
import config
import atexit
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

case = [('unittest', 'unittest1'), ('parametrized', 'parametrized2'), ('selenium', 'selenium3')]

def quit_driver():
    if config.driver:
        print("Close chrome......")
        config.driver.quit()

@paramunittest.parametrized(*case)
class BaiDu(unittest.TestCase):

    def __init__(self, methodName='runTest'):
        unittest.TestCase.__init__(self, methodName)
        if not config.driver:
            # 初始化:打开浏览器
            config.driver = config.driver_type()
            print("Open chrome......")
            atexit.register(quit_driver)  # 程序结束时执行

    @property
    def driver(self):
        return config.driver

    def setParameters(self, input1, input2):
        self.input1 = input1
        self.input2 = input2

    def test_search(self):
        driver = self.driver
        self._testMethodDoc = self.input1  # 设置用例名称
        driver.get('https://www.baidu.com')
        driver.find_element_by_xpath("//*[@id='kw']").send_keys(self.input1)
        WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='su']")))
        driver.find_element_by_xpath("//*[@id='su']").click()
        time.sleep(1)
        self.assertEqual(self.driver.title, self.input1+"_百度搜索")

    def test_search2(self):
        driver = self.driver
        self._testMethodDoc = self.input2
        driver.get('https://www.baidu.com')
        driver.find_element_by_xpath("//*[@id='kw']").send_keys(self.input2)
        WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='su']")))
        driver.find_element_by_xpath("//*[@id='su']").click()
        time.sleep(1)
        self.assertEqual(self.driver.title, self.input2+"_百度搜索")

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

# -*- coding: utf-8 -*-
# @FileName: report.py
# 运行report进行测试并生成报告

import unittest
import HTMLTestReportEN

if __name__ == '__main__':
    discover = unittest.defaultTestLoader.discover(start_dir='./', pattern="webtest.py")
    fp = open('./TestReport.html', 'wb')
    runner = HTMLTestReportEN.HTMLTestRunner(stream=fp, title='Web test', description='Test in BaiDu.',tester="vegetable000", verbosity=2)
    runner.run(discover)
    fp.close()

最终报告:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值