Python 如何运行web刮板的每日自动测试?

Python 如何运行web刮板的每日自动测试?,python,django,testing,Python,Django,Testing,我维护了一个用Django REST构建的REST API,在内部,它可以刮取几个网页来检索一组信息 我对每个端点都进行了测试,以检查刮刀是否仍在工作。他们实际上连接到页面,检查源代码是否保持不变,基本上一切正常 我希望每天运行这些测试几次,并在这些刮板出现故障时收到通知。我不知道我该怎么做 我正在寻找一种方法,使我能够: 每X小时自动运行一次测试 把结果通知我 我一直在研究CI,但我不确定这是否是更可取的方法 如果您已经有脚本执行测试并通知您(例如通过电子邮件或Pushover,Python中

我维护了一个用Django REST构建的REST API,在内部,它可以刮取几个网页来检索一组信息

我对每个端点都进行了测试,以检查刮刀是否仍在工作。他们实际上连接到页面,检查源代码是否保持不变,基本上一切正常

我希望每天运行这些测试几次,并在这些刮板出现故障时收到通知。我不知道我该怎么做

我正在寻找一种方法,使我能够:

  • 每X小时自动运行一次测试
  • 把结果通知我

  • 我一直在研究CI,但我不确定这是否是更可取的方法

    如果您已经有脚本执行测试并通知您(例如通过电子邮件或Pushover,Python中的实现并不太难),请设置cron作业:

    打开一个终端并键入
    crontab-e
    ,如果需要,请选择编辑器并添加以下行:

    * */X    * * *   python /path/to/testscript.py
    
    其中X应替换为您希望测试的频率。例如,如果您编写3而不是X,则每3小时将执行一次脚本。

    您可以尝试

    • 易于配置
    • 管理各个应用程序目录中的cron
    • 可通过
      设置
      模块进行配置
    • manage.py
      集成,可轻松添加、删除和显示cron
    注意:适用于Django>=
    1.8


    编辑

    配置和使用示例

    • 通过
      pip安装
      pip安装django crontab
    • 设置
      模块中添加
      已安装的应用程序。
      已安装的应用程序=(
      “django_crontab”,
      ...
      )
    • 在项目目录路径中创建名为
      crons.py
      (可以任意命名)的模块

    crons.py(例如path
    /path/to/project/

    听起来是cron作业的完美任务。或者
    from .models import FooModel
    
    def foo_scheduler():
        # update Foo's bar on each invocation
        foos = FooModel.objects.all()
        for foo in foos:
            foo.bar += 42
            foo.save()
    
    ...
    
    CRONJOBS = (
        # this will recur every 5 mins
        ('*/5 * * * *', '<app_name>.crons.foo_scheduler'),
    )
    
    ...