如何为网络抓取工具运行每日自动测试?

时间:2018-08-31 13:56:26

标签: python django testing

我维护了一个使用Django REST构建的REST API,该API在内部刮取了多个网页以检索一堆信息。

我对每个端点进行测试,以检查刮板是否仍在工作。他们实际上与页面连接,并检查来源是否保持不变,并且基本上一切都还好。

我想每天运行几次这些测试,并在这些刮板中的任何一个发生故障时得到通知。我不确定该如何处理。

我正在寻找一种允许我进行以下操作的方法:

  1. 每X个小时自动运行测试
  2. 将结果通知我

我一直在研究CI,但是我不确定这是否是首选方法。

2 个答案:

答案 0 :(得分:0)

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

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

* */X    * * *   python /path/to/testscript.py

其中X应替换为您要测试的频率。例如,如果您写3而不是X,则每3个小时将执行一次脚本。

答案 1 :(得分:0)

您可以尝试django-crontab

  • 易于配置。
  • 管理相应应用程序目录中的分支。
  • 可通过settings模块进行配置。
  • manage.py集成在一起,可以轻松地添加,删除和显示分支。

注意:适用于Django> = 1.8


编辑

示例配置和用法

  • 通过pip安装:pip install django-crontab
  • INSTALLED_APPS模块中添加settings
    INSTALLED_APPS = ( 'django_crontab', ... )
  • 在项目目录路径中创建一个名为crons.py的模块(您可以命名为任意名称)。

crons.py(示例路径/path/to/project/<app_name>/crons.py

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()
  • settings中注册cron。

settings.py

...

CRONJOBS = (
    # this will recur every 5 mins
    ('*/5 * * * *', '<app_name>.crons.foo_scheduler'),
)

...
  • 最后,使用python manage.py crontab add添加到crontab中。
  • 使用python manage.py crontab remove删除。
  • 要列出所有活动作业,请python manage.py crontab show

请参阅其他configuration options here