From 554eeae329dbaca9a3caf7ba7fc93adc64da93b3 Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Tue, 24 Oct 2023 09:43:42 +0200 Subject: [PATCH 1/3] [IMP] report_xlsx: test performance improvement - Switch to setUpClass for avoiding repeat the same setup for each test. - Include context keys for avoiding mail operations overhead. --- report_xlsx/tests/test_report.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/report_xlsx/tests/test_report.py b/report_xlsx/tests/test_report.py index a254294b1..43026597e 100644 --- a/report_xlsx/tests/test_report.py +++ b/report_xlsx/tests/test_report.py @@ -14,15 +14,26 @@ except ImportError: class TestReport(common.TransactionCase): - def setUp(self): - super().setUp() - report_object = self.env["ir.actions.report"] - self.xlsx_report = self.env["report.report_xlsx.abstract"].with_context( + @classmethod + def setUpClass(cls): + super().setUpClass() + # Remove this variable in v16 and put instead: + # from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + DISABLED_MAIL_CONTEXT = { + "tracking_disable": True, + "mail_create_nolog": True, + "mail_create_nosubscribe": True, + "mail_notrack": True, + "no_reset_password": True, + } + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + report_object = cls.env["ir.actions.report"] + cls.xlsx_report = cls.env["report.report_xlsx.abstract"].with_context( active_model="res.partner" ) - self.report_name = "report_xlsx.partner_xlsx" - self.report = report_object._get_report_from_name(self.report_name) - self.docs = self.env["res.company"].search([], limit=1).partner_id + cls.report_name = "report_xlsx.partner_xlsx" + cls.report = report_object._get_report_from_name(cls.report_name) + cls.docs = cls.env["res.company"].search([], limit=1).partner_id def test_report(self): report = self.report From e09f4c34b8131109aa65de853e7bbaa27941f613 Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Tue, 24 Oct 2023 09:47:26 +0200 Subject: [PATCH 2/3] [IMP] report_xlsx_helper: test performance improvement - Switch to setUpClass for avoiding repeat the same setup for each test. - Include context keys for avoiding mail operations overhead. --- .../tests/test_report_xlsx_helper.py | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/report_xlsx_helper/tests/test_report_xlsx_helper.py b/report_xlsx_helper/tests/test_report_xlsx_helper.py index 25c384edb..b1af4ffa2 100644 --- a/report_xlsx_helper/tests/test_report_xlsx_helper.py +++ b/report_xlsx_helper/tests/test_report_xlsx_helper.py @@ -7,20 +7,31 @@ from odoo.tests.common import TransactionCase class TestReportXlsxHelper(TransactionCase): - def setUp(self): - super(TestReportXlsxHelper, self).setUp() + @classmethod + def setUpClass(cls): + super(TestReportXlsxHelper, cls).setUpClass() + # Remove this variable in v16 and put instead: + # from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + DISABLED_MAIL_CONTEXT = { + "tracking_disable": True, + "mail_create_nolog": True, + "mail_create_nosubscribe": True, + "mail_notrack": True, + "no_reset_password": True, + } + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) today = date.today() - p1 = self.env.ref("base.res_partner_1") - p2 = self.env.ref("base.res_partner_2") + p1 = cls.env.ref("base.res_partner_1") + p2 = cls.env.ref("base.res_partner_2") p1.date = today p2.date = today - self.partners = p1 + p2 + cls.partners = p1 + p2 ctx = { "report_name": "report_xlsx_helper.test_partner_xlsx", "active_model": "res.partner", - "active_ids": self.partners.ids, + "active_ids": cls.partners.ids, } - self.report = self.env["ir.actions.report"].with_context(**ctx) + cls.report = cls.env["ir.actions.report"].with_context(**ctx) def test_report_xlsx_helper(self): report_xls = self.report._render_xlsx(None, None) From 541cd8b08c8971fb60b8d3cac24889a993e7b73c Mon Sep 17 00:00:00 2001 From: josep-tecnativa Date: Tue, 24 Oct 2023 09:50:21 +0200 Subject: [PATCH 3/3] [IMP] report_xml: test performance improvement - Create setUpClass method - Include context keys for avoiding mail operations overhead. --- report_xml/tests/test_report_xml.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/report_xml/tests/test_report_xml.py b/report_xml/tests/test_report_xml.py index b92ed9213..39e1b0c1b 100644 --- a/report_xml/tests/test_report_xml.py +++ b/report_xml/tests/test_report_xml.py @@ -7,6 +7,20 @@ from odoo.tests import common class TestXmlReport(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + # Remove this variable in v16 and put instead: + # from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + DISABLED_MAIL_CONTEXT = { + "tracking_disable": True, + "mail_create_nolog": True, + "mail_create_nosubscribe": True, + "mail_notrack": True, + "no_reset_password": True, + } + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + def test_xml(self): report_object = self.env["ir.actions.report"] report_name = "report_xml.demo_report_xml_view"