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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • index:比较两列表元素(不考虑顺序,不考虑重复);调get型数据库接口,循环造数据(示例);连接操作mysql数据库;多进程执行pytest UI脚本(示例)。1、比较两列表元素(不考虑顺序,不考虑重复)def compareList(list1, list2):     """比较列表元素,不考虑顺序,不考虑重复"""     if sorted(set(list1)) == sorted(set(l...
            0 0 1118
            分享
          •   压测和性能分析方法论  性能测试基础  性能测试的常见分类  性能测试。用来验证系统的性能是否满足设计的预期,一般来说对系统的压力会比较小,不会压垮系统,只是进行简单的验证。  负载测试。通过不断施加负载压力,寻找系统最优的处理能力,最好的性能状态,达到最大的性能指标。通常说来,负载测试的结果比性能测试的结果高一点。  稳定性测试。可以认为是负载测试的一个子集,长时间不均匀的施压,然后看系统的各项指标是否都正常。  压力测试:是我们常见的,一般我们将压测都是指这个,用来确定系统能够抗住的最大容量是多少,压力测试一般都会压到系统最大能够承受的点,然后得出一个峰值结论。  压测类型和施压模式 ...
            0 0 789
            分享
          • 经常问的问题Q #1) PostgreSQL 相对于 MySQL 的优势是什么?答: PostgreSQL 以其可扩展性和对不同标准的遵从性而闻名。它是执行复杂操作的首选。Q #2) MySQL 相对于 PostgreSQL 的优势是什么?答: MySQL 是一个大型数据库,使用广泛,也是最值得信赖的数据库。Q #3) PostgreSQL 对数据库大小有任何限制吗?回答:不,PostgreSQL 中数据库的最大大小没有限制。它是无限的。Q #4) PostgreSQL 可以免费使用吗?答:是的,PostgreSQL 可以免费使用。该许可证类似于 MIT 风格的许可证。即使...
            0 0 1206
            分享
          • 我们都知道,随着年龄的增长 测试的行业岗位方向大致分为测试专家、测试开发工程师、测试管理,还有一个方向就是QA,软件质量保证那么,如何能够转行QA呢,一般按照我的经验来看,80%的概率是在公司内部转岗,这样比较容易,没有相关经验的机会很渺茫说到这里,CMMI和QA 有什么关系,为什么写做QA要了解CMMI我们来看一个截图,如下显示QA岗位技能要求一般都要求熟悉CMMI,更有的要求参与过cmmi培训等所以,CMMI属于最基础的内容,也是想成为QA的第一步1、什么是CMMI“CMMI全称是Capability Maturity Model Integration,是能力成熟度集成模型。CMMI 5...
            0 0 2825
            分享
          •   免费领资料的活动还没参与吗?点击链接填写软件测试调查问卷,即刻领取:http://vote.51testing.com/  1. 如果不考虑上限的话我认为是后端,然后是前端、测试、运维。  后端程序员起薪6K左右,然后会上升很快,一般有3-5年经验的20K左右,当然做的好的30K的也不在少数。  前端程序员起薪7K,然后会平稳上升,有3-5年的工作经验的话一般会有15K-18K,做的好的也有20K+的。  测试工程师的薪资一般会在6K左右,然后上升就比较慢了,之后会在13K左右吧。  运维工程师就有点尴尬了,薪酬是一般程序员的80%,但相对付出的时间不到一般程序员的50%。  当然这是我在...
            0 0 1991
            分享
      • 51testing软件测试圈微信