专栏首页猪圈子UI自动化unittest框架之装饰器@classmethod

UI自动化unittest框架之装饰器@classmethod

01

进入正文探讨

前言:unittest框架大家应该很熟悉,unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,就是我们每执行一条用例,就会打开一次浏览器;缺点:操作繁琐、耗时长、易报错。

于是就想是不是可以只打开一次浏览器,执行完所有用例再关闭呢?

这就需要用到装饰器(@classmethod)来解决了。

一.装饰器

1>用setUp与setUpClass区别

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

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

二.selenium实例模型

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

# coding:utf-8
import unittest
import time

class Test(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("start!")
#初始化环境 开始执行脚本
    @classmethod
    def tearDownClass(cls):
        time.sleep(1)
        print("end!")
#结束
    def test01(self):
        print(u"执行测试用例01")
#开始执行测试用例...
    def test03(self):
       print(u"执行测试用例03")

    def test02(self):
        print(u"执行测试用例02")

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

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

2>从执行结果可以看出,前置和后置在执行用例前只执行了一次。

通过装饰器后,我们执行的耗时就缩短,执行一次即可跑完测试用例

初学者们,看到这里你们明白了吗?欢迎留言给出建议:)

文部分来源网络,如有侵权请第一时间联系删除。

本文分享自微信公众号 - 猪圈子(Tester-sc),作者:也哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 二十三大实践、编码建议和技巧

    2020年,你又立了什么新的 Flag?新一年,我为大家准备 23 个非常优秀的 Python 实践技巧。希望这些诀窍能在实际工作中帮助大家,并且学到一些有用的...

    测试小兵
  • python接口自动化测试-unittest-批量用例管理

    作者:Glen.He 出处:http://www.cnblogs.com/puresoul/

    测试小兵
  • 一条查询SQL执行原理

    客户端将查询sql按照mysql通信协议传输到服务端。服务端接受到请求后,服务端单起一个线程执行sql

    测试小兵
  • 一份机器学习模型离线评估方法的详细手册

    读完分类与回归算法的评估指标以及排序算法的评估指标之后,你已经知道了机器学习中分类、回归以及排序算法相关的评估指标。在这篇给大家介绍一些机器学习中离线评估模型性...

    abs_zero
  • Python中子进程Timeout的使用

       Python中并没有Timeout模块,但是在程序中经常遇到需要超时控制的情况。

    py3study
  • 常用Sql整理笔记

    一、多行结果转换为一行,用逗号隔开。 mssql代码如下: -- 多行 select tid from typeinfo where pid=4 -- 一行 s...

    Java中文社群_老王
  • Python循环 - 胖子老板来包烟

    因此,大家在编写程序时,应该尽量养成习惯:除非需求的特殊要求,否则 循环 的计数都从 0 开始

    Devops海洋的渔夫
  • 字符串 & 变量运算

    年少疯,为您用心写出值得深度参考的小白系列教程! 感谢您的关注!送上一首《追光者》,愿你不忘梦想,砥砺前行!

    DataScience
  • 使用Docker,MQTT,Grafana,InfluxDB,Python和Arduino

    我必须承认,这篇文章只是与Grafana和InfluxDB一起玩的借口。InfluxDB是一个很酷的数据库,专门用于处理时间序列数据。Grafana是一个用于时...

    February
  • 小伙伴们,你们还记得“人人网”吗

    早前盘点了火一把就死的商业模式,大多死在了不会创新和步伐缓慢上,今天又恍惚中追忆起谜一般的反面教材,那个曾经中国最大的校园社区——人人网。

    齿轮易创说互联网

扫码关注云+社区

领取腾讯云代金券