Skip to main content
 首页 » 编程设计

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

2025年05月04日30over140

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

我所说的是运行一些分析工具作为自动测试运行的一部分,保存性能结果,然后将它们与一些任意值进行比较,这样任何瓶颈都会跳出来。例如,我最近有一个案例,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 文件)。

希望对您有所帮助。