web自动化我不想每条用例都打开一次浏览器?可以吗?用装饰器就可以解决!

用装饰器可以解决 web自动化用例打开一次浏览器这个问题 unittest之装饰器(@classmethod) 前言 装饰器 执行顺序 selenium实例 前言  unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间。  于是就想是不是可以只打开一次浏览器,执行完用例再关闭呢?这就需要用到装饰器(@classmethod)来解决了。 装饰器 用setUp与setUpClass区别 setup():每个测试case运. 阅读详情

前言

 unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间。

 于是就想是不是可以只打开一次浏览器,执行完用例再关闭呢?这就需要用到装饰器(@classmethod)来解决了。

装饰器

用setUp与setUpClass区别

  • setup():每个测试case运行前运行
  • teardown():每个测试case运行完后执行
  • setUpClass():必须使用@classmethod 装饰器,所有case运行前只运行一次
  • tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次

@是修饰符,classmethod是python里的类方法

执行顺序

  1. 用类方法写几个简单case
#!/usr/bin/python3

# @Time    : 2020/8/19 18:19
# @Author  : 码上开始

import unittest
import time

class Test(unittest.TestCase):
  @classmethod
  def setUpClass(cls):
    print "开始!"

  @classmethod
  def tearDownClass(cls):
    time.sleep(1)
    print "结束"

  def test01(self):
    print "执行用例1"

  def test03(self):
    print "执行用例3"

  def test02(self):
    print "执行用例2"

  def addtest(self):
    print "add方法"

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

从执行结果可以看出,前置和后置在执行用例前只执行了一次。
开始
执行用例1
执行用例2
执行用例3
…结束


Ran 3 tests in 1.001s

selenium实例

  1. 可以把打开浏览器操作放到前置setUpClass(cls)里,这样就可以实现打开一次浏览器,执行多个case了
#!/usr/bin/python3

# @Time    : 2020/8/19 18:25
# @Author  : 码上开始

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
import unittest

class BolgHome(unittest.TestCase):
  u'''博客首页'''
  @classmethod
  def setUpClass(cls):
    cls.driver = webdriver.Firefox()
    url = "https://blog.youkuaiyun.com/laozhu_Python"
    cls.driver.get(url)
    cls.driver.implicitly_wait(30)

  @classmethod
  def tearDownClass(cls):
    cls.driver.quit()

  def test_01(self):
    u'''验证元素存在:博客园'''
    locator = ("id", "blog_nav_sitehome")
    text = u"博客园"
    result = EC.text_to_be_present_in_element(locator, text)(self.driver)
    self.assertTrue(result)

  def test_02(self):
    u'''验证元素存在:首页'''
    locator = ("id", "blog_nav_myhome")
    text = u"首页"
    result = EC.text_to_be_present_in_element(locator, text)(self.driver)
    self.assertTrue(result)

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

如果对软件测试、接口测试、自动化测试、持续集成、面试经验。感兴趣可以进到893694563,群内会有不定期的分享测试资料。还会有技术大牛,业内同行一起交流技术

python pytest框架实现登录页面web自动化(UI自动化), API接口自动化思路也差不多 强烈推荐python自动化学习网站–白月黑羽(http://www.byhy.net/tut/auto/selenium/01/) 我不是打广告, 是真的讲解的非常好!!!!网站文字内容+B站视频,涵盖了python自动化的几乎所有主要内容,见下图 另一个学习pytest的好习惯就是看它的官方文档 https://docs.pytest.org/en/latest/how-to/usage.html#specifying-which-tests-to-run 另外,如果想要我手上的这个练习项目的,可以在底 阅读详情

相关推荐

编写简单的自动化测试用例

环境部署 自动化工具:selenium + webdriver 脚本语言为:Python3.x 浏览器:Chrome 系统环境:window7 编译工具:Pycharm 基本目录架构 Business:测试业务抽象流程(url登录操作) Common:项目相关的抽象通用代码,与测试业务无关 Test_Case:测试用例 Test_Data:存放数据层的数据文件(账号密码,搜索内容等) Test_Suite组织测试套件(组装不执行) run.py 执行测试用例统一运行入口 report:测

佡鹿的博客 1576

【python】自动化测试浏览器不关闭

基于selenium,实现自动化测试,谷歌浏览器不关闭

summer 3045

自动化测试之 web - 基础篇

Web自动化测试,基于python+selenium+pytest一、环境准备1.1 驱动安装1.2 selenium 安装1.3 chrome 启动参数( 以下皆以chrome浏览器作为举例对象)二、 常用对象定位方法2.1 id 和 name2.2 tag_name 和 classname2.3 css定位2.4 xpath定位2.5 link_text and partial_link_text定位三.、添加等待时间3.1 休眠等待:time3.2 智能等待: implicitly-w

fate_520的博客 745

【selenium】python+selenium+unittest,关于每次执行完一个测试用例都关闭浏览器等时间较长的问题之解决方案...

 我一直在思考第一个博客应该写什么,然后我就解决了开通博客后解决的第一个问题,择题不如撞题;   如果大多数人和我一样,接触python+selenium+unittest是从selenium IDE开始的话,你也一定会遇到这样的问题:   我们写了5个,10个,甚至20个测试用例,放在一个py脚本里,每个测试用例执行完毕之后,都会走一遍退出浏览器的操作,然后再启动浏览器,再退出,如此反复,浪...

weixin_30955617的博客 870

云计算学习——5G网络技术

华为eNSP网络设备模拟器的基础安装及简单使用

qq_42520799的博客 1445

无人驾驶汽车系统入门(三十二)——FEC算法:点云快速欧几里得聚类实战解析

本文深入解析了FEC算法在无人驾驶点云聚类中的高效应用,通过逐点处理策略和体素栅格预分割技术,实现了比传统欧几里得聚类快百倍的速度。文章详细介绍了算法原理、Python实现及参数调优指南,并对比了FEC与传统算法的性能差异,为无人驾驶系统开发提供了实用解决方案。

weixin_29065015的博客 487

web自动化之浏览器启动

web自动化之浏览器启动--chrome浏览器,edge浏览器,ie浏览器,Firefox浏览器

飞奔的蜗牛 1492

嘉立创EDA实战:从点亮第一盏灯到完成首块PCB

本文详细介绍了使用嘉立创EDA从点亮第一盏LED灯到完成首块PCB的全过程。通过实战案例分享,包括原理图绘制、PCB设计、DRC检查、覆铜操作等关键步骤,帮助电子设计爱好者快速掌握嘉立创EDA的使用技巧,并避免常见的设计错误。

weixin_30314793的博客 373

UI自动化经常踩的坑

1、启动浏览器报错 报错信息:Exception in thread “main” org.openqa.selenium.WebDriverException: unknown error: call function result missing ‘value’ 出现以上报错信息,是由于浏览器版本与driver版本不匹配,各版本driver下载地址为:https://npm.taobao.org/mirrors/chromedriver;在进行UI测试之前,一定要先检查自己浏览器的版本,然后找到对应版本

定格空间 1327

ENVI学习总结(十二)——基于改进的 CASA 模型反演 NPP

基于改进的 CASA 模型反演 NPP 数据为地理空间数据云提供的 TM 影像,其具体信息如图 1 所示。该实验中所使用的 TM 数据已进行过 QUAC 快速大气校正,来消除大气和光照等因素对地物反射的影响。Landsat 主题成像仪(TM)是 Landsat4 和 Landsat5 携带的传感器,每 16 天扫描同一地区,即 16 天覆盖全球一次。 TM 影像包含 7 个波段,波段 1-5 ...

Arcgiser的博客 3万+

TLS回调函数–一文看懂(详)

TLS回调函数 CTF RE

Joyce_hjll的博客 3734

python UI自动化无界面运行

python大家都知道可以使用selenium进行在Windows环境下运行,但每次都会进行弹框运行。但有时我们需要脚本在Linux环境进行运行,一般Linux是无用界面的所有使用之前的脚本会有报错。解决方案如下: 让用例在Linux环境无界面执行。 #!/usr/bin/env python # -*- coding: utf-8 -*- import time from selenium import webdriver from selenium.webdriver.chrome.opt..

weixin_50303961的博客 2211

DSSAT模型建模教程

随着数字农业和智慧农业的发展,基于过程的作物生长模型(Process-based Crop Growth Simulation Model)在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农业碳中和、农田固碳减排等领域扮演着越来越重要的作用。现有版本V4.7能模拟27种主要农作物的生长发育和产量形成过程,被广泛应用于精细农业、水肥管理、气候变化、粮食安全、土壤碳周转、环境影响、农业可持续性、农业生态等诸多与农业生产和科研有关的领域。如果你是个模型入门者,这次将让你体验一键模拟的乐趣。

weixin_55561616的博客 1414

Web UI自动化测试我不想每条用例都打开一次浏览器?可以吗?用装饰器就可以解决

测试webUI,不可避免的就是打开浏览器,试想一下,我们每跑一个自动化用例都打开一次浏览器而不关闭,当我们执行了十几个甚至更多的用例时,我们的桌面上将会打开十几个甚至更多的浏览器,这样我们的电脑性能将会被拖慢。 如果我们手工去关闭,不小心就可能关闭错误把正在运行的关闭掉,导致测试执行失败,退一步来说,自动化执行的时候还要人工干预,这也不是自动化的目的了

weixin_56502375的博客 1211

行为预测模型:Social LSTM与Graph Neural Networks

行为预测模型:Social LSTM与Graph Neural Networks ,人工智能,计算机视觉,大模型,AI,本文围绕行为预测模型Social LSTM与Graph Neural Networks展开,介绍了两者的基础概念、原理、应用场景,还对比了它们在优势、劣势和适用场景上的不同,最后给出了相应的代码示例。Social LSTM基于LSTM,通过社交池化层处理多智能体交互;图神经网络处理图结构数据,靠消息传递获取信息,二者各有侧重,适用于不同场景。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 15万+

基于MATLAB的鲁棒主成分分析(Robust PCA)图像去噪

鲁棒主成分分析(Robust PCA)是一种有效的图像去噪方法,它能够在保持图像细节的同时去除噪声。本文将介绍如何使用MATLAB实现基于鲁棒PCA的图像去噪,并提供相应的源代码。它假设噪声是随机的、高斯分布的,并将图像分解为一个低秩矩阵和一个稀疏矩阵的和。低秩矩阵表示图像的结构和纹理信息,稀疏矩阵表示图像中的噪声和细节信息。接下来,我们将图像矩阵减去均值,得到规范化的图像矩阵。然后,我们将灰度图像转换为矩阵形式,并计算图像的均值。通过分离出低秩矩阵和稀疏矩阵,我们就得到了去噪后的图像和残差图像。

DevRevolt的博客 1125

selenium之unittest 装饰器

还记不记得我们selenium之unittest的简单用法(二)中的unittest执行顺序。 unittest 里面 setUp 可以在每次执行用例前执行,这样有效的减少了 代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间。 于是就想是不是可以只打开一次浏览器,执行完用例再关闭呢?这就需要用到装饰器(@classmethod)来解决了。 一、

MTbaby的博客 1378

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

浏览器兼容性的自动化测试

在进行 Web 端测试的时候,为了保证网站能在浏览器都有一个良好的表现,我们通常会进行浏览器的兼容测试。测试的工具非常非常多,比如说大名鼎鼎的 browserling。但是在中如何实现浏览器的兼容测试,却没有太多的参考教程,绝大多数的教程都是介绍几个 selenium 的 API,然后就让你自己去拓展,丝毫没有提到通过浏览器运行自动化测试代码的问题。那么,同一套的代码,能不能通过简单的配置,就能启动浏览器分别进行测试呢?

OKCRW的博客 1133

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

web UI自动化介绍

业务流程不频繁改动UI 元素不频繁改动,界面稳定需要频繁回归的场景多平台运行,组合遍历型、大量重复的任务s业界使用较多的web UI自动化工具是 Selenium支持多语言,行业内最火最主流用于web浏览器测试的工具支持的浏览器包括IE,Firefox,Safari,Chrome,Edge等使用简单,可使用Java,Python等多种语言编写用例脚本主要由三个工具构成:WebDriver、IDE、Grid能力建设——初级Selenium 的架构:fill:#333;

白鹤想亮翅的博客 1510

Selenium做Web自动化踩过的坑

setUp(连接数据库、打开浏览器等)、tearDown(关闭数据库,关闭浏览器等)这样反复执行,会影响一个网站执行多个用例(多次打开和关闭浏览器,所有用例并没有全部执行完),数据库的话还会增加服务器资源的损耗,且浪费时间。如上所说的情况,在自动化实施过程中,尝尝会有在值执行某步操作或者某个命令之前,先看看要操作的元素是否处于显示状态、是否可操作等需求,也就是看看我们期望的场景。在元素定位过程中,如果出现了或者标签,说明该页面中嵌套了一个新的页面,该页面内的元素无法直接定位。(2)重新添加需要执行的文件。

OKCRW的博客 1022

WEB自动化测试

2.link text属性定位:访问网页的时候,我们可以通过超链接的方式链接到下层的网页或者其他网站,通过查找网页的 link text 属性,模拟对链接文本的单击操作就可以实现自动地访问。格式: pytest --reruns 3 --reruns-delay 2 或 pytest -vs --reruns=3 --reruns-delay=2。6.3conftest.py:可以理解成专门存放fixture的配置文件,一个工程可以建多个conftest.py文件,来实现数据,参数,方法、函数的共享。

2301_77031350的博客 1055

SeleniumBase持久化浏览器:解决Web自动化状态管理难题

在Web自动化测试和爬虫开发中,状态管理是一个核心挑战。传统方案如Selenium每次启动都是全新会话,导致登录、验证码等前置操作重复执行,极大影响效率。其原理在于浏览器会话无法在脚本执行间保持,这违背了真实用户操作场景。为解决此问题,出现了复用用户数据目录、Cookie注入等技术,但各有局限。SeleniumBase框架的持久化浏览器功能,通过Chrome DevTools Protocol(CDP)连接并复用同一浏览器进程,实现了会话状态的保持。这项技术的价值在于大幅提升自动化脚本执行速度、增强测试稳定

weixin_34228387的博客 321

Selenium2+python自动化55-unittest之装饰器(@classmethod)

前言 前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间。 于是就想是不是可以只打开一次浏览器,执行完用例再关闭呢?这就需要用到装饰器(@classmethod)来解决了。 一、装饰器 1.用setUp与setUpClass区别 setup():每个测试case运行前运行 t...

qq_27371025的博客 55

07 web 自动化之 Unittest 应用:测试报告&装饰器&断言

官网下载 HtmlTestRunner.py 只能支持 python2 版本,支持 Python3 ,需要做修改。企业测试报告的优化及定制 优化测试报告模板 通过 js+html/html5。pytest+allure 生成更加美观的测试报告+优化定制(装饰器)安装三方库:BeatifulReport。路径:python安装路径/Lib。

iOS_HC的博客 522
上一篇: Python代码报错,不要慌!报错异常类型有哪些,都帮你整理好了
下一篇: 代码报错了!怎么办怎么办!快来见识下Python中的异常处理try/except
码上开始
博客等级 码龄9年 1780粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上开始

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值