• 0
  • 0
分享
  • 掌握自动化测试,3个方法轻松实现定时执行!——软件测试圈
  • 曼倩诙谐 2023-08-15 11:28:33 字数 3031 阅读 1415 收藏 0

  前言

  我们在做自动化时,当自动化测试用例编写完成后,都会想着将其自动执行程序,或者说通过定时的形式进行执行我们的自动化测试程序,这样才能真正意义上实现自动化测试。哪么大家知道都有哪些方法可以帮助我们实现这个功能吗?接下来小编就简单介绍下集中如何定时执行我们的自动化测试用例程序。

  Jenkins

  说到定时任务,肯定有人想到jenkins,没错,jenkins是一款持续集成的工具,其中里面就有一个小功能构建定时器,可以很好的帮助我们实现这个功能。

  使用方法

  1.通过进入到对应的测试项目内中,然后点击configure(配置)进入其页面中。

1-1.png

  2.配置页面中的Build Triggers(构建触发器),先勾选Build periodcally,这里表示的是定时构建任务,输入框内表示需要构建的规则内容

1-2.png

  3.构建规则表格中一共可以书写5个*, * * * * * 其中每个*之间需要通过空格或者tab键进行隔离开

  第一个*表示分钟,取值0~59

  第二个*表示小时,取值0~23

  第三个*表示一个月的第几天,取值1~31

  第四个*表示第几月,取值1~12

  第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周几

  举例:如定时5分钟一次 H/5 * * * *?

  构建完成后,我们就等待5分钟,查看任务触发器,发现每5分钟进行构建一次。

1-3.png

  schedule

  schedule属于python的第三方库,可以按照秒,分,小时,日期,或者自定义时间执行时间。

  安装:pip install schedule

  使用方法

  小编先介绍下这个库的使用方法,后面继续介绍如何通过我们的自动化测试用例结合使用该库:

# coding:utf-8
import schedule
import time
def add():
    a = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    print('add函数每5秒运行一次::%s' %a)
    
def foo():
    b = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    print('foo函数每10秒运行一次::%s'%b)
# 通过schedule设置定时任务
schedule.every(5).seconds.do(add)  # 每5秒执行一次
schedule.every(10).seconds.do(foo)  # 每10秒执行一次
while True:
    schedule.run_pending() # 运行所有可运行的任务
    time.sleep(1)

  通过执行该运行该脚本,可以通过下面的打印信息可以看到,已经按照我们设定好的规则进行运行。

1-4.png

  当然schedule不仅仅可以设置秒,也可以进行对分,时,星期进行设置,这里小编不在展示,只列出对应的方法,感兴趣的小伙伴们可以自行尝试。

  schedule.every(10).minutes.do(执行程序函数名)   # 每10分钟执行一次

  schedule.every().hour.do(执行程序函数名)   # 每小时执行一次

  schedule.every().day.at("11:30").do(执行程序函数名) # 每天11点半执行

  schedule.every().monday.do(执行程序函数名) # 每周一执行

  schedule.every().wednesday.at("15:15").do(执行程序函数名) # 每周三15点15执行

  自动化测试案例

  小编这里通过编写几个简单的测试用例,然后通过schedule进行调用,其实方法和上述方法差不多,这里加入了通过schedule实现传入参数的方法。

# coding:utf-8
import requests
url = 'http://apis.juhe.cn/simpleWeather/query'
def test_01():
    data = {
        "city": '上海',
        "key": 'xxxxxxxxx'
    }
    r = requests.post(url, data=data)
    assert r.json()['reason'] == '查询成功!'
def test_02():
    data = {
        "city": '北京',
        "key": 'xxxxxxxxx'
    }
    r = requests.post(url, data=data)
    assert r.json()['result']['city'] == '北京'

  小编这里简单的编写了接口自动化测试用例,测试用例存储在test_01.py的文件中,我们在新创建执行文件main.py文件,在文件中通过os模块进行执行程序pytest的程序。

# coding:utf-8
import schedule
import os
import time
def start(cmd):
    os.system(cmd)
    print('自动化测试用例执行完成:%s' % time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 设置每5秒执行一次程序
schedule.every(5).seconds.do(start, 'pytest -vs test_01.py')
while True:
    schedule.run_pending()  # 运行所有可运行的任务
    time.sleep(1)

  通过命令行中,执行对应的程序,然后就可以看到,我们的自动化测试用例,每间隔5秒钟,就正常的执行一次。

1-5.png

  任务计划程序

  上述已经简单的介绍两种方法了,在介绍一种关于通过windows帮助我们实现定时任务的操作。

  使用方法

  1.在windows中搜索出来“任务计划程序”

1-6.png

  2.在当前页面中,右键点击“任务计划程序库”,然后进入到创建基本任务向导页面中,在这里可以设置我们任务的名称和任务的描述内容,方便查看。

1-7.png

  3.点击下一步后,进入到触发器页面中,这里可以设置我们的触发时间,这个可以自行根据项目进行设置。

1-8.png

  4.点击下一步后,在每日页面中,可以进行设置每日程序自动运行的时间和几天触发一次。

1-9.png

  5.执行操作就是执行我们的程序,这里可以直接选择执行程序。

1-10.png

  6.点击下一步后,进入到启动程序这里,这里需要设置我们需要执行的程序。

1-11.png

  7.点击下一步后,终终终于设置完成了,我们只要看下信息是否正确,然后就可以点击完成,这样我们的定时任务就已经设置完成了。

1-12.png

  总结

  小编通过三个方法介绍了如何定时执行我们的自动化测试用例,可能中间存在大家使用过的,也存在没有使用过的方法,但大家都可以进行了解下,当然小编这里定时任务的方法可能不止这些,如果有其他更好的方法,大家也可以进行留言一起学习。好了,非常感谢您的阅读,希望本篇文章对您有所帮助。


作者:测试安静   

来源:http://www.51testing.com/html/08/n-7797208.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 引言:不知不觉中成为一名测试攻城狮已将近7年之久,在这期间做过不少API接口测试。最早接触的API接口在项目中称之为(webservice),期间走了不少弯路。也收获了不少的经验,现分享下在测试的路上走过的坑。第一阶段小白初体验:初始接触API是在11年,第一次接触API接口一脸的懵逼,很茫然不知如何下手测试,对http网络协议也不了解。后来由研发同学提供对应接口web界面,测试时进入对应接口界面,在textbox输入对应参数值提交后查看返回值。但刚幵始一脸懵逼,返回值也不清楚是否正确,每次都是把研发同学叫过来直接看结果。严重耽误了效率,后来不断的自我反思,在研发同学的不断讲解API知识。不断...
            0 0 1022
            分享
          •   前言  此次文章的连载,目的是笔者从自身经历出发,梳理出来的一套完整的测试体系,涵盖了功能测试、接口测试、单元测试、代码扫描、性能测试、稳定性测试、异常测试、前端测试、线上质量跟踪、线下质量改进、安全测试等各个测试环境。  希望可以通过自己的文章输出,让大家对测试工作有一个更整体性的认知,也方便大家构建自身的测试体系,在测试行业上越走越好~  代码扫描的起源  静态源代码扫描是近年来软件测试过程当中,被人提及较多的软件应用安全解决方案之一,也是大厂必备考题。  它是指在软件工程当中,程序员在写好源代码后,无需经过编译器编译,而直接使用一些扫描工具对其进行扫描,找出代码当中存在的一些语义缺陷...
            1 1 1529
            分享
          • 1、引言面试官:小鱼,你来说说自动化测试架构是啥,怎么理解自动化测试架构?小鱼心想:挖草~ ~ 你这个坑,你这一个问题,我都能写一篇文章了。奈何心里这样想的,也不能就这样表达出来,于是乎,小鱼就说:嗯,这问题,我可以从以下几点来慢慢说。2、架构是个啥东西软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用...
            0 1 4272
            分享
          • 常见状态码一、2xx 成功200 OK 请求成功,且返回了内容204 No Content 请求成功处理,但不返回内容二、3xx 重定向301 Moved Permanently 请求永久重定向302 Moved Temporarily 请求临时重定向304 Not Modified 文件未修改,可以直接使用缓存的文件三、4xx 请求错误400 Bad Request 客户端请求有语法错误,不能被服务器所理解401 Unauthorized 请求未经授权,认证未通过403 Forbidden 服务器收到请求,但是拒绝服务,通常会在响应正文中给出不提供服务的原因。通常跟权限有关404 Not F...
            0 0 537
            分享
          •   今天分享个小案例给大家,欢迎大家针对下面的案例,提出有不同的看法、不同的解决方案,期待你积极的参与哟~~  案(lai)例(lou):  A给B评审测试用例,A说:"服务器开关的case需要添加测试用例",B说:"这个不在测试范围内,之前开会的时候说了测试主要关注客户端测试,不进行服务器的相关测试,所以不需要添加测试用例"。  两人针对自己的内容反复强调,在工位上小声的争吵了半个小时(其中A用过举例子的方式,A事后觉得例子没有说服力),最后带着略有不满找到leader,让leader来解决  如果你是A,没有leader,你应该怎么解决?  如果你是...
            1 0 2562
            分享
      • 51testing软件测试圈微信