从django数据库性能测试生成性能报告。

pytest-django-queries的Python项目详细描述


pytest django查询

从django数据库性能测试中生成性能关系 (灵感来自coverage.py

Requirement StatusCoverage StatusDocumentation StatusVersionLatest Unstable on pypi

Commits since latest releaseSupported versionsSupported implementations

用法

安装pytest-django-queries,编写pytest测试并标记任何 应该计数的测试或使用count_queries夹具。

注意:要使用最新的开发版本,请使用pip install --pre pytest-django-queries

importpytest@pytest.mark.count_queriesdeftest_query_performances():Model.objects.all()# Or...deftest_another_query_performances(count_queries):Model.objects.all()

每个测试文件和/或包都被视为一个类别。“类别”内的每个测试 组合其数据,有关详细信息,请参见Visualising Results

你会找到full documentation here

使用固定装置时的建议

如果要添加生成查询的装置,则可能会出现这种情况 你不想被计入结果,或者简单地说,你想使用 pytest-django插件和pytest-django-queries一起,它将生成 结果中不需要的查询。

为此,您需要将count_queriesfixture作为最后一个要执行的fixture

但同时,您可能希望使用pytest标记的能力来分离 计算来自其他测试的测试的查询。那样的话,你可能想做点什么 像这样告诉标记不要自动地将count_queriesfixture注入 您的测试:

importpytest@pytest.mark.count_queries(autouse=False)deftest_retrieve_main_menu(fixture_making_queries,count_queries):pass

注意关键字参数autouse=Falsecount_queriesfixture的用法 被放在最后

将pytest django与pytest django查询一起使用

我们建议您在使用pytest-django时执行以下操作:

importpytest@pytest.mark.django_db@pytest.mark.count_queries(autouse=False)deftest_retrieve_main_menu(any_fixture,other_fixture,count_queries):pass

与Github集成

待定。

本地测试

只需通过pip安装pytest-django-queries,然后运行 使用pytest进行测试。应该在 使用.pytest-queries调用的文件中的当前工作目录。

注意:要覆盖保存路径,请将--django-db-bench PATH选项传递给pytest。

可视化结果

您可以使用show命令从测试结果生成一个表:

django-queries show

您将得到这样的结果:

+---------+--------------------------------------+
| Module  |          Tests                       |
+---------+--------------------------------------+
| module1 | +-----------+---------+------------+ |||| Test Name | Queries | Duplicated |||| +-----------+---------+------------+ ||||   test1   |0|0|||| +-----------+---------+------------+ ||||   test2   |1|0|||| +-----------+---------+------------+ |
+---------+--------------------------------------+
| module2 | +-----------+---------+------------+ |||| Test Name | Queries | Duplicated |||| +-----------+---------+------------+ ||||   test1   |123|0|||| +-----------+---------+------------+ |
+---------+--------------------------------------+

导出结果(HTML)

为了获得更好的演示,可以使用html命令将结果导出为HTML

django-queries html

它将生成一些like this

比较结果

您可以在 运行测试,然后重新运行它们。之后,您可以运行django-queries diff 要生成这样的结果:

screenshot

开发

首先,在本地克隆项目。然后,使用下面的命令安装它

./setup.py develop

之后,您需要安装开发需求。为此, 运行下面的命令。

pip install -e .[dev]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用相同的模型、颜色、字体和侦听器创建JTable的副本?   JavaSpring+Thymeleaf:用户时区中的时间   java HTTP请求返回非法状态异常安卓   java xml验证JDK 1.5 JDK 1.6差异   junit如何使用Parasoft从java文件生成测试文件   java使用getSpans方法获取可扩展文件中的所有跨距   javascript无法使用bindingResult设置表单元素   java RCP应用程序活动   获取Java类中泛型字段的类型   java更新查询,从一个依赖于另一个表的表中更改字段   java错误:GWT类型中的方法setBridge(GWTBridge)不适用于参数(GWTBridge)   为什么java/安卓需要在XML元素的开头有一个空格来解析它?   java通用代码,用于将字符串转换为任何所需的类   java如何创建Liferay钩子以扩展购物车portlet的功能   java Selected()方法存在漏洞   java新行附加在我的加密字符串上   使用NaN值的指数平滑的java   使用飞碟和iText发行的java XHTML到PDF   java如何在不使用HTMLDocument的情况下在JTextPane中显示两列文本?