python - 使用单元测试来衡量 Django 性能

标签 python django performance unit-testing django-unittest

单元测试是衡量应用程序功能的好方法,但我想知道是否有人使用它们进行一些初步的性能分析?

我所说的是运行一些分析工具作为自动测试运行的一部分,保存性能结果,然后将它们与一些任意值进行比较,这样任何瓶颈都会跳出来。例如,我最近有一个案例,Django 标记库将模板解析时间增加了十倍——如果模板解析是在单元测试中构建的,它会更快可见。

是否有任何模块可以将这种测量包含到标准 Django 和/或 Python 设置中?如果没有,你有什么特别的建议或提醒我自己写吗?谢谢!

最佳答案

我将只描述我们正在尝试做些什么来估计不同版本之间的初步性能影响。不确定这是否是最佳方法,但它对我们有用。

我们的 Python/Django 项目中有一堆测试。我们正在使用 nose作为试跑者。你可能知道,它有一个内置的命令行选项 --with-xunit 可以将测试结果转储到 xUnit 格式的 xml 文件中(顺便说一句,jenkins CI 支持这种格式)。

每次发布​​时,我们都会执行测试运行,nose 会为我们生成一个 xml 文件(我们将其存储在代码存储库中)。这是它的一部分:

...
<testcase classname="prj.tests.functional.services.workflow.test_getCases.GetCases" name="test_full_access_ok"
          time="1.775"/>
<testcase classname="prj.tests.functional.services.workflow.test_getCases.GetCases"
          name="test_illegal_assigned_flag" time="0.008"/>
<testcase classname="prj.tests.functional.services.workflow.test_getCases.GetCases" name="test_illegal_comments"
          time="0.049"/>
...

您可能已经注意到,所有测试用例都有一个 time 属性。因此,我们所做的只是按名称将测试用例执行时间与以前和当前版本进行比较(基本上,比较两个 xml 文件)。

希望对您有所帮助。

关于python - 使用单元测试来衡量 Django 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16812253/

相关文章:

python - 将带有间隔数字的字符串转换为数组

python - 如何获取两个请求之间的差异

python - Django 抽象模型设置带有下划线的 related_name

Python子类元组对象能够在内部重新实例化自身

python - 使用 BeautifulSoup 抓取 Google 时出现语法错误

python - 为什么 web2py 没有更容易被采用?

django - 在 Django 1.9 中的应用程序之间导入模型

java - 了解 Fastutil 内部的资源

c++ - 使用不同的符号表重新计算 Boost Spirit 解析的属性的最有效方法是什么?

SQL排序: server vs.客户端