【问题标题】:How to test time-related functions in Django?如何在 Django 中测试与时间相关的功能?
【发布时间】:2011-03-30 04:12:51
【问题描述】:

我正在编写一个记录事件时间的应用程序。对于单元测试,我通常会使用猴子补丁将datetime.time 替换为假的,以便我可以正确测试它。我正在尝试使用 Selenium 进行端到端测试,测试用例在一个单独的程序中,而不是使用 python manage.py test。因此我不能做补丁。我确实尝试过使用 manage.py,但它似乎没有帮助。

我确定这是一个已解决的问题。我应该怎么做? Selenium 是不是适合这种测试的工具?我是否错过了如何让测试用例与应用程序对话?

【问题讨论】:

    标签: django testing selenium


    【解决方案1】:

    Selenium 与完整的网络服务器通信,并且无法访问在该网络服务器内运行的 python 解释器。即使您使用 python 编写 SeleniumRC 脚本,解释器的脚本实例也与 webserver 实例是分开的。

    如果您通过 manage.py runserver 运行测试网络服务器,您可以编写自己的管理命令,将“runserver”替换为修补 datetime.time 的版本。这并不容易,因此您可以考虑修改您的 Selenium 驱动测试以应对实时发生的事件,或者将您的时间敏感测试转换为 django 客户端测试,以便您可以使用模拟库。

    【讨论】:

    • 我发现这篇 blog.disqus.net/2008/07/21/testing-django-applications 的帖子似乎正是我想要的,但补丁似乎不在我拥有的 Django 版本中,尽管它已经 2 岁了。
    • @GDom,感谢您提供的信息。我重新访问了 django 的客户端,在 xpath 的帮助下,它似乎正在做我需要的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2020-05-26
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多