From a8d0fb5ac92c50f52e9a07fb88ccec42a412973b Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Thu, 26 Mar 2026 11:32:00 +0530 Subject: [PATCH 1/5] refactor(test): erpnext testsuite should be primary superclass (cherry picked from commit f3148e052c8312c5a1592da74de53a20562d2afb) --- .../test_advance_payment_ledger_entry.py | 2 +- .../test_bank_reconciliation_tool.py | 2 +- .../doctype/bank_transaction/test_bank_transaction_fees.py | 5 +++-- .../test_exchange_rate_revaluation.py | 2 +- erpnext/accounts/doctype/ledger_health/test_ledger_health.py | 2 +- .../test_process_statement_of_accounts.py | 2 +- .../test_repost_accounting_ledger.py | 2 +- .../doctype/unreconcile_payment/test_unreconcile_payment.py | 2 +- .../report/accounts_payable/test_accounts_payable.py | 2 +- .../report/accounts_receivable/test_accounts_receivable.py | 2 +- .../test_accounts_receivable_summary.py | 2 +- .../customer_ledger_summary/test_customer_ledger_summary.py | 2 +- .../test_item_wise_purchase_register.py | 2 +- .../test_item_wise_sales_register.py | 2 +- .../test_profit_and_loss_statement.py | 2 +- .../accounts/report/sales_register/test_sales_register.py | 2 +- .../supplier_ledger_summary/test_supplier_ledger_summary.py | 2 +- .../tax_withholding_details/test_tax_withholding_details.py | 2 +- erpnext/controllers/tests/test_distributed_discount.py | 2 +- erpnext/controllers/tests/test_reactivity.py | 2 +- erpnext/edi/doctype/code_list/test_code_list.py | 4 ++-- erpnext/edi/doctype/common_code/test_common_code.py | 4 ++-- .../address_template/test_regional_address_template.py | 5 ++--- erpnext/selling/doctype/sales_order/test_sales_order.py | 2 +- 24 files changed, 29 insertions(+), 29 deletions(-) diff --git a/erpnext/accounts/doctype/advance_payment_ledger_entry/test_advance_payment_ledger_entry.py b/erpnext/accounts/doctype/advance_payment_ledger_entry/test_advance_payment_ledger_entry.py index 53047b61718..d910bef3d94 100644 --- a/erpnext/accounts/doctype/advance_payment_ledger_entry/test_advance_payment_ledger_entry.py +++ b/erpnext/accounts/doctype/advance_payment_ledger_entry/test_advance_payment_ledger_entry.py @@ -15,7 +15,7 @@ from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_orde from erpnext.tests.utils import ERPNextTestSuite -class TestAdvancePaymentLedgerEntry(AccountsTestMixin, ERPNextTestSuite): +class TestAdvancePaymentLedgerEntry(ERPNextTestSuite, AccountsTestMixin): """ Integration tests for AdvancePaymentLedgerEntry. Use this class for testing interactions between multiple components. diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/test_bank_reconciliation_tool.py b/erpnext/accounts/doctype/bank_reconciliation_tool/test_bank_reconciliation_tool.py index 5354aa0c4dd..3a55b3fc1d8 100644 --- a/erpnext/accounts/doctype/bank_reconciliation_tool/test_bank_reconciliation_tool.py +++ b/erpnext/accounts/doctype/bank_reconciliation_tool/test_bank_reconciliation_tool.py @@ -15,7 +15,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestBankReconciliationTool(AccountsTestMixin, ERPNextTestSuite): +class TestBankReconciliationTool(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction_fees.py b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction_fees.py index 95fc615d91d..e0ea8cd441a 100644 --- a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction_fees.py +++ b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction_fees.py @@ -2,10 +2,11 @@ # See license.txt import frappe -from frappe.tests import UnitTestCase + +from erpnext.tests.utils import ERPNextTestSuite -class TestBankTransactionFees(UnitTestCase): +class TestBankTransactionFees(ERPNextTestSuite): def test_included_fee_throws(self): """A fee that's part of a withdrawal cannot be bigger than the withdrawal itself.""" diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py index 1310a8b482b..a6adba537e2 100644 --- a/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py +++ b/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py @@ -13,7 +13,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestExchangeRateRevaluation(AccountsTestMixin, ERPNextTestSuite): +class TestExchangeRateRevaluation(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_usd_receivable_account() diff --git a/erpnext/accounts/doctype/ledger_health/test_ledger_health.py b/erpnext/accounts/doctype/ledger_health/test_ledger_health.py index 84fd3925ded..d9d4249ca69 100644 --- a/erpnext/accounts/doctype/ledger_health/test_ledger_health.py +++ b/erpnext/accounts/doctype/ledger_health/test_ledger_health.py @@ -10,7 +10,7 @@ from erpnext.accounts.utils import run_ledger_health_checks from erpnext.tests.utils import ERPNextTestSuite -class TestLedgerHealth(AccountsTestMixin, ERPNextTestSuite): +class TestLedgerHealth(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/test_process_statement_of_accounts.py b/erpnext/accounts/doctype/process_statement_of_accounts/test_process_statement_of_accounts.py index c16933c7836..6e2f2300054 100644 --- a/erpnext/accounts/doctype/process_statement_of_accounts/test_process_statement_of_accounts.py +++ b/erpnext/accounts/doctype/process_statement_of_accounts/test_process_statement_of_accounts.py @@ -14,7 +14,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestProcessStatementOfAccounts(AccountsTestMixin, ERPNextTestSuite): +class TestProcessStatementOfAccounts(ERPNextTestSuite, AccountsTestMixin): def setUp(self): frappe.db.set_single_value("Selling Settings", "validate_selling_price", 0) letterhead = frappe.get_doc("Letter Head", "Company Letterhead - Grey") diff --git a/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py b/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py index b60c13fc8b8..08075b2b0be 100644 --- a/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py +++ b/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py @@ -16,7 +16,7 @@ from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import get_gl_ from erpnext.tests.utils import ERPNextTestSuite -class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite): +class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py b/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py index 7f931b7556e..e3bfed7de55 100644 --- a/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py +++ b/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py @@ -14,7 +14,7 @@ from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_orde from erpnext.tests.utils import ERPNextTestSuite -class TestUnreconcilePayment(AccountsTestMixin, ERPNextTestSuite): +class TestUnreconcilePayment(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py index 87a4b989661..a8074468f55 100644 --- a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py +++ b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py @@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestAccountsPayable(AccountsTestMixin, ERPNextTestSuite): +class TestAccountsPayable(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py index d38ce924cf0..a739502074e 100644 --- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py +++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py @@ -10,7 +10,7 @@ from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_orde from erpnext.tests.utils import ERPNextTestSuite -class TestAccountsReceivable(AccountsTestMixin, ERPNextTestSuite): +class TestAccountsReceivable(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py b/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py index 96fa4ae8b64..5b8065eef0c 100644 --- a/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py +++ b/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py @@ -8,7 +8,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestAccountsReceivable(AccountsTestMixin, ERPNextTestSuite): +class TestAccountsReceivable(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.maxDiff = None self.create_company() diff --git a/erpnext/accounts/report/customer_ledger_summary/test_customer_ledger_summary.py b/erpnext/accounts/report/customer_ledger_summary/test_customer_ledger_summary.py index 0b114dd96d2..624e007c1b0 100644 --- a/erpnext/accounts/report/customer_ledger_summary/test_customer_ledger_summary.py +++ b/erpnext/accounts/report/customer_ledger_summary/test_customer_ledger_summary.py @@ -10,7 +10,7 @@ from erpnext.controllers.sales_and_purchase_return import make_return_doc from erpnext.tests.utils import ERPNextTestSuite -class TestCustomerLedgerSummary(AccountsTestMixin, ERPNextTestSuite): +class TestCustomerLedgerSummary(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/accounts/report/item_wise_purchase_register/test_item_wise_purchase_register.py b/erpnext/accounts/report/item_wise_purchase_register/test_item_wise_purchase_register.py index eed45ea60bb..64b0dfc739d 100644 --- a/erpnext/accounts/report/item_wise_purchase_register/test_item_wise_purchase_register.py +++ b/erpnext/accounts/report/item_wise_purchase_register/test_item_wise_purchase_register.py @@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestItemWisePurchaseRegister(AccountsTestMixin, ERPNextTestSuite): +class TestItemWisePurchaseRegister(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_supplier() diff --git a/erpnext/accounts/report/item_wise_sales_register/test_item_wise_sales_register.py b/erpnext/accounts/report/item_wise_sales_register/test_item_wise_sales_register.py index 689edeac1c4..708bf1ffe89 100644 --- a/erpnext/accounts/report/item_wise_sales_register/test_item_wise_sales_register.py +++ b/erpnext/accounts/report/item_wise_sales_register/test_item_wise_sales_register.py @@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestItemWiseSalesRegister(AccountsTestMixin, ERPNextTestSuite): +class TestItemWiseSalesRegister(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py b/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py index 90d28033f19..4a509f63843 100644 --- a/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py +++ b/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py @@ -12,7 +12,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestProfitAndLossStatement(AccountsTestMixin, ERPNextTestSuite): +class TestProfitAndLossStatement(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/accounts/report/sales_register/test_sales_register.py b/erpnext/accounts/report/sales_register/test_sales_register.py index ca284cc636c..c6926d57dea 100644 --- a/erpnext/accounts/report/sales_register/test_sales_register.py +++ b/erpnext/accounts/report/sales_register/test_sales_register.py @@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestItemWiseSalesRegister(AccountsTestMixin, ERPNextTestSuite): +class TestItemWiseSalesRegister(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/accounts/report/supplier_ledger_summary/test_supplier_ledger_summary.py b/erpnext/accounts/report/supplier_ledger_summary/test_supplier_ledger_summary.py index 418d86abb66..4ee0ea04677 100644 --- a/erpnext/accounts/report/supplier_ledger_summary/test_supplier_ledger_summary.py +++ b/erpnext/accounts/report/supplier_ledger_summary/test_supplier_ledger_summary.py @@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestSupplierLedgerSummary(AccountsTestMixin, ERPNextTestSuite): +class TestSupplierLedgerSummary(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_supplier() diff --git a/erpnext/accounts/report/tax_withholding_details/test_tax_withholding_details.py b/erpnext/accounts/report/tax_withholding_details/test_tax_withholding_details.py index a2a732e8de6..49e50b7ff32 100644 --- a/erpnext/accounts/report/tax_withholding_details/test_tax_withholding_details.py +++ b/erpnext/accounts/report/tax_withholding_details/test_tax_withholding_details.py @@ -16,7 +16,7 @@ from erpnext.accounts.utils import get_fiscal_year from erpnext.tests.utils import ERPNextTestSuite -class TestTaxWithholdingDetails(AccountsTestMixin, ERPNextTestSuite): +class TestTaxWithholdingDetails(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.clear_old_entries() diff --git a/erpnext/controllers/tests/test_distributed_discount.py b/erpnext/controllers/tests/test_distributed_discount.py index 4f4911c8537..94b5f43d29f 100644 --- a/erpnext/controllers/tests/test_distributed_discount.py +++ b/erpnext/controllers/tests/test_distributed_discount.py @@ -4,7 +4,7 @@ from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_orde from erpnext.tests.utils import ERPNextTestSuite -class TestTaxesAndTotals(AccountsTestMixin, ERPNextTestSuite): +class TestTaxesAndTotals(ERPNextTestSuite, AccountsTestMixin): @ERPNextTestSuite.change_settings("Selling Settings", {"allow_multiple_items": 1}) def test_distributed_discount_amount(self): so = make_sales_order(do_not_save=1) diff --git a/erpnext/controllers/tests/test_reactivity.py b/erpnext/controllers/tests/test_reactivity.py index fa3007087e1..1fdc9c8be73 100644 --- a/erpnext/controllers/tests/test_reactivity.py +++ b/erpnext/controllers/tests/test_reactivity.py @@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestReactivity(AccountsTestMixin, ERPNextTestSuite): +class TestReactivity(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_company() self.create_customer() diff --git a/erpnext/edi/doctype/code_list/test_code_list.py b/erpnext/edi/doctype/code_list/test_code_list.py index d37b1ee8f5a..7c9ec54a627 100644 --- a/erpnext/edi/doctype/code_list/test_code_list.py +++ b/erpnext/edi/doctype/code_list/test_code_list.py @@ -2,8 +2,8 @@ # See license.txt # import frappe -from frappe.tests.utils import FrappeTestCase +from erpnext.tests.utils import ERPNextTestSuite -class TestCodeList(FrappeTestCase): +class TestCodeList(ERPNextTestSuite): pass diff --git a/erpnext/edi/doctype/common_code/test_common_code.py b/erpnext/edi/doctype/common_code/test_common_code.py index e9c67b2cc82..19e0f02d99f 100644 --- a/erpnext/edi/doctype/common_code/test_common_code.py +++ b/erpnext/edi/doctype/common_code/test_common_code.py @@ -2,8 +2,8 @@ # See license.txt # import frappe -from frappe.tests.utils import FrappeTestCase +from erpnext.tests.utils import ERPNextTestSuite -class TestCommonCode(FrappeTestCase): +class TestCommonCode(ERPNextTestSuite): pass diff --git a/erpnext/regional/address_template/test_regional_address_template.py b/erpnext/regional/address_template/test_regional_address_template.py index 952748b3338..76e63d40f81 100644 --- a/erpnext/regional/address_template/test_regional_address_template.py +++ b/erpnext/regional/address_template/test_regional_address_template.py @@ -1,8 +1,7 @@ -from unittest import TestCase - import frappe from erpnext.regional.address_template.setup import get_address_templates, update_address_template +from erpnext.tests.utils import ERPNextTestSuite def ensure_country(country): @@ -14,7 +13,7 @@ def ensure_country(country): return c -class TestRegionalAddressTemplate(TestCase): +class TestRegionalAddressTemplate(ERPNextTestSuite): def test_get_address_templates(self): """Get the countries and paths from the templates directory.""" templates = get_address_templates() diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py index f6f4e8bea4f..a27674b9191 100644 --- a/erpnext/selling/doctype/sales_order/test_sales_order.py +++ b/erpnext/selling/doctype/sales_order/test_sales_order.py @@ -35,7 +35,7 @@ from erpnext.stock.get_item_details import get_bin_details from erpnext.tests.utils import ERPNextTestSuite -class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite): +class TestSalesOrder(ERPNextTestSuite, AccountsTestMixin): def setUp(self): self.create_customer("_Test Customer Credit") From 013aea6b7e8663832dd28ca3097105d1c53f5bca Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Thu, 26 Mar 2026 12:44:52 +0530 Subject: [PATCH 2/5] refactor(test): move logic from AccountsTestMixin to ERPNextTestSuite (cherry picked from commit 2b37d7514d799ca705222fc5afe46dfd703734ea) --- .../test_repost_accounting_ledger.py | 100 +++++++++--------- erpnext/tests/utils.py | 8 ++ 2 files changed, 56 insertions(+), 52 deletions(-) diff --git a/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py b/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py index 08075b2b0be..793bde5c99f 100644 --- a/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py +++ b/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py @@ -9,29 +9,25 @@ from frappe.utils import add_days, nowdate, today from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice -from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.accounts.utils import get_fiscal_year from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import get_gl_entries, make_purchase_receipt from erpnext.tests.utils import ERPNextTestSuite -class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): +class TestRepostAccountingLedger(ERPNextTestSuite): def setUp(self): - self.create_company() - self.create_customer() - self.create_item() frappe.db.set_single_value("Selling Settings", "validate_selling_price", 0) update_repost_settings() def test_01_basic_functions(self): si = create_sales_invoice( - item=self.item, - company=self.company, - customer=self.customer, - debit_to=self.debit_to, - parent_cost_center=self.cost_center, - cost_center=self.cost_center, + item="_Test Item", + company="_Test Company", + customer="_Test Customer", + debit_to="Debtors - _TC", + parent_cost_center="Main - _TC", + cost_center="Main - _TC", rate=100, ) @@ -48,7 +44,7 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): # Test Validation Error ral = frappe.new_doc("Repost Accounting Ledger") - ral.company = self.company + ral.company = "_Test Company" ral.delete_cancelled_entries = True ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name}) ral.append( @@ -65,7 +61,7 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): ral.save() # manually set an incorrect debit amount in DB - gle = frappe.db.get_all("GL Entry", filters={"voucher_no": si.name, "account": self.debit_to}) + gle = frappe.db.get_all("GL Entry", filters={"voucher_no": si.name, "account": "Debtors - _TC"}) frappe.db.set_value("GL Entry", gle[0], "debit", 90) gl = qb.DocType("GL Entry") @@ -94,23 +90,23 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): def test_02_deferred_accounting_valiations(self): si = create_sales_invoice( - item=self.item, - company=self.company, - customer=self.customer, - debit_to=self.debit_to, - parent_cost_center=self.cost_center, - cost_center=self.cost_center, + item="_Test Item", + company="_Test Company", + customer="_Test Customer", + debit_to="Debtors - _TC", + parent_cost_center="Main - _TC", + cost_center="Main - _TC", rate=100, do_not_submit=True, ) si.items[0].enable_deferred_revenue = True - si.items[0].deferred_revenue_account = self.deferred_revenue + si.items[0].deferred_revenue_account = "Deferred Revenue - _TC" si.items[0].service_start_date = nowdate() si.items[0].service_end_date = add_days(nowdate(), 90) si.save().submit() ral = frappe.new_doc("Repost Accounting Ledger") - ral.company = self.company + ral.company = "_Test Company" ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name}) self.assertRaises(frappe.ValidationError, ral.save) @@ -118,35 +114,35 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): def test_04_pcv_validation(self): # Clear old GL entries so PCV can be submitted. gl = frappe.qb.DocType("GL Entry") - qb.from_(gl).delete().where(gl.company == self.company).run() + qb.from_(gl).delete().where(gl.company == "_Test Company").run() si = create_sales_invoice( - item=self.item, - company=self.company, - customer=self.customer, - debit_to=self.debit_to, - parent_cost_center=self.cost_center, - cost_center=self.cost_center, + item="_Test Item", + company="_Test Company", + customer="_Test Customer", + debit_to="Debtors - _TC", + parent_cost_center="Main - _TC", + cost_center="Main - _TC", rate=100, ) - fy = get_fiscal_year(today(), company=self.company) + fy = get_fiscal_year(today(), company="_Test Company") pcv = frappe.get_doc( { "doctype": "Period Closing Voucher", "transaction_date": today(), "period_start_date": fy[1], "period_end_date": today(), - "company": self.company, + "company": "_Test Company", "fiscal_year": fy[0], - "cost_center": self.cost_center, - "closing_account_head": self.retained_earnings, + "cost_center": "Main - _TC", + "closing_account_head": "Retained Earnings - _TC", "remarks": "test", } ) pcv.save().submit() ral = frappe.new_doc("Repost Accounting Ledger") - ral.company = self.company + ral.company = "_Test Company" ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name}) self.assertRaises(frappe.ValidationError, ral.save) @@ -156,12 +152,12 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): def test_03_deletion_flag_and_preview_function(self): si = create_sales_invoice( - item=self.item, - company=self.company, - customer=self.customer, - debit_to=self.debit_to, - parent_cost_center=self.cost_center, - cost_center=self.cost_center, + item="_Test Item", + company="_Test Company", + customer="_Test Customer", + debit_to="Debtors - _TC", + parent_cost_center="Main - _TC", + cost_center="Main - _TC", rate=100, ) @@ -170,7 +166,7 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): # with deletion flag set ral = frappe.new_doc("Repost Accounting Ledger") - ral.company = self.company + ral.company = "_Test Company" ral.delete_cancelled_entries = True ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name}) ral.append("vouchers", {"voucher_type": pe.doctype, "voucher_no": pe.name}) @@ -181,12 +177,12 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): def test_05_without_deletion_flag(self): si = create_sales_invoice( - item=self.item, - company=self.company, - customer=self.customer, - debit_to=self.debit_to, - parent_cost_center=self.cost_center, - cost_center=self.cost_center, + item="_Test Item", + company="_Test Company", + customer="_Test Customer", + debit_to="Debtors - _TC", + parent_cost_center="Main - _TC", + cost_center="Main - _TC", rate=100, ) @@ -195,7 +191,7 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): # without deletion flag set ral = frappe.new_doc("Repost Accounting Ledger") - ral.company = self.company + ral.company = "_Test Company" ral.delete_cancelled_entries = False ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name}) ral.append("vouchers", {"voucher_type": pe.doctype, "voucher_no": pe.name}) @@ -210,16 +206,16 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): provisional_account = create_account( account_name="Provision Account", parent_account="Current Liabilities - _TC", - company=self.company, + company="_Test Company", ) another_provisional_account = create_account( account_name="Another Provision Account", parent_account="Current Liabilities - _TC", - company=self.company, + company="_Test Company", ) - company = frappe.get_doc("Company", self.company) + company = frappe.get_doc("Company", "_Test Company") company.enable_provisional_accounting_for_non_stock_items = 1 company.default_provisional_account = provisional_account company.save() @@ -229,7 +225,7 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): item = make_item(properties={"is_stock_item": 0}) - pr = make_purchase_receipt(company=self.company, item_code=item.name, rate=1000.0, qty=1.0) + pr = make_purchase_receipt(company="_Test Company", item_code=item.name, rate=1000.0, qty=1.0) pr_gl_entries = get_gl_entries(pr.doctype, pr.name, skip_cancelled=True) expected_pr_gles = [ {"account": provisional_account, "debit": 0.0, "credit": 1000.0, "cost_center": test_cc}, @@ -246,7 +242,7 @@ class TestRepostAccountingLedger(ERPNextTestSuite, AccountsTestMixin): ) repost_doc = frappe.new_doc("Repost Accounting Ledger") - repost_doc.company = self.company + repost_doc.company = "_Test Company" repost_doc.delete_cancelled_entries = True repost_doc.append("vouchers", {"voucher_type": pr.doctype, "voucher_no": pr.name}) repost_doc.save().submit() diff --git a/erpnext/tests/utils.py b/erpnext/tests/utils.py index 6aefc4da247..e2a2a7ab195 100644 --- a/erpnext/tests/utils.py +++ b/erpnext/tests/utils.py @@ -1980,6 +1980,14 @@ class BootStrapTestData: ["_Test Payable", "Current Liabilities", 0, "Payable", None], ["_Test Receivable USD", "Current Assets", 0, "Receivable", "USD"], ["_Test Payable USD", "Current Liabilities", 0, "Payable", "USD"], + # Deferred Account + ["Deferred Revenue", "Current Liabilities", 0, None, None], + ["Deferred Expense", "Current Assets", 0, None, None], + # Bank + ["HDFC", "Bank Accounts", 0, "Bank", None], + # Advance Account + ["Advance Received", "Current Liabilities", 0, "Receivable", None], + ["Advance Paid", "Current Assets", 0, "Payable", None], # Loyalty Account ["Loyalty", "Direct Expenses", 0, "Expense Account", None], ] From 85b08e4706bb28b3899a532ea4d1dd80d191c829 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 27 Mar 2026 11:56:30 +0530 Subject: [PATCH 3/5] refactor(test): remove AccountsTestMixin from distributed discount (cherry picked from commit 0b6546ea0689aed862b862df9c85c48a679dc1f9) --- erpnext/controllers/tests/test_distributed_discount.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/erpnext/controllers/tests/test_distributed_discount.py b/erpnext/controllers/tests/test_distributed_discount.py index 94b5f43d29f..e5efe9518b5 100644 --- a/erpnext/controllers/tests/test_distributed_discount.py +++ b/erpnext/controllers/tests/test_distributed_discount.py @@ -1,10 +1,9 @@ -from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.controllers.taxes_and_totals import calculate_taxes_and_totals from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order from erpnext.tests.utils import ERPNextTestSuite -class TestTaxesAndTotals(ERPNextTestSuite, AccountsTestMixin): +class TestTaxesAndTotals(ERPNextTestSuite): @ERPNextTestSuite.change_settings("Selling Settings", {"allow_multiple_items": 1}) def test_distributed_discount_amount(self): so = make_sales_order(do_not_save=1) From ee61d796313d55c1e2b28f3dfa60373074b409af Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 27 Mar 2026 11:56:52 +0530 Subject: [PATCH 4/5] refactor(test): remove AccountsTestMixin from reactivity (cherry picked from commit d2ee967383aee47b6b6ca0e5066a700b59aa051c) --- erpnext/accounts/test/accounts_mixin.py | 20 ----------- erpnext/controllers/tests/test_reactivity.py | 38 ++++++-------------- 2 files changed, 10 insertions(+), 48 deletions(-) diff --git a/erpnext/accounts/test/accounts_mixin.py b/erpnext/accounts/test/accounts_mixin.py index 5b1c9e6aa57..c7619e8afd9 100644 --- a/erpnext/accounts/test/accounts_mixin.py +++ b/erpnext/accounts/test/accounts_mixin.py @@ -229,23 +229,3 @@ class AccountsTestMixin: ] for doctype in doctype_list: qb.from_(qb.DocType(doctype)).delete().where(qb.DocType(doctype).company == self.company).run() - - def create_price_list(self): - pl_name = "Mixin Price List" - if not frappe.db.exists("Price List", pl_name): - self.price_list = ( - frappe.get_doc( - { - "doctype": "Price List", - "currency": "INR", - "enabled": True, - "selling": True, - "buying": True, - "price_list_name": pl_name, - } - ) - .insert() - .name - ) - else: - self.price_list = frappe.get_doc("Price List", pl_name).name diff --git a/erpnext/controllers/tests/test_reactivity.py b/erpnext/controllers/tests/test_reactivity.py index 1fdc9c8be73..17f6f480589 100644 --- a/erpnext/controllers/tests/test_reactivity.py +++ b/erpnext/controllers/tests/test_reactivity.py @@ -2,36 +2,17 @@ import frappe from frappe import qb from frappe.utils import today -from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import disable_dimension -from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.tests.utils import ERPNextTestSuite -class TestReactivity(ERPNextTestSuite, AccountsTestMixin): - def setUp(self): - self.create_company() - self.create_customer() - self.create_item() - self.create_usd_receivable_account() - self.create_price_list() - self.clear_old_entries() - - def disable_dimensions(self): - res = frappe.db.get_all("Accounting Dimension", filters={"disabled": False}) - for x in res: - dim = frappe.get_doc("Accounting Dimension", x.name) - dim.disabled = True - dim.save() - +class TestReactivity(ERPNextTestSuite): def test_01_basic_item_details(self): - self.disable_dimensions() - # set Item Price frappe.get_doc( { "doctype": "Item Price", - "item_code": self.item, - "price_list": self.price_list, + "item_code": "_Test Item", + "price_list": "Standard Selling", "price_list_rate": 90, "selling": True, "rate": 90, @@ -42,17 +23,18 @@ class TestReactivity(ERPNextTestSuite, AccountsTestMixin): si = frappe.get_doc( { "doctype": "Sales Invoice", - "company": self.company, - "customer": self.customer, - "debit_to": self.debit_to, + "company": "_Test Company", + "customer": "_Test Customer", + "debit_to": "Debtors - _TC", "posting_date": today(), - "cost_center": self.cost_center, + "cost_center": "Main - _TC", + "currency": "INR", "conversion_rate": 1, - "selling_price_list": self.price_list, + "selling_price_list": "Standard Selling", } ) itm = si.append("items") - itm.item_code = self.item + itm.item_code = "_Test Item" si.process_item_selection(itm.idx) self.assertEqual(itm.rate, 90) From 05f47bbf6e5df7f85ff3a27458121cb7d39ca460 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 27 Mar 2026 12:12:48 +0530 Subject: [PATCH 5/5] refactor(test): remove AccountsTestMixin from Sales Order (cherry picked from commit 2aecf0103a6b0d79f743e5214c3bc52ffc26537a) --- .../doctype/sales_order/test_sales_order.py | 52 ++++++++----------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py index a27674b9191..6616c52b720 100644 --- a/erpnext/selling/doctype/sales_order/test_sales_order.py +++ b/erpnext/selling/doctype/sales_order/test_sales_order.py @@ -10,7 +10,6 @@ from frappe.core.doctype.user_permission.test_user_permission import create_user from frappe.tests import change_settings from frappe.utils import add_days, flt, nowdate, today -from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.controllers.accounts_controller import InvalidQtyError, get_due_date, update_child_qty_rate from erpnext.maintenance.doctype.maintenance_schedule.test_maintenance_schedule import ( make_maintenance_schedule, @@ -35,10 +34,7 @@ from erpnext.stock.get_item_details import get_bin_details from erpnext.tests.utils import ERPNextTestSuite -class TestSalesOrder(ERPNextTestSuite, AccountsTestMixin): - def setUp(self): - self.create_customer("_Test Customer Credit") - +class TestSalesOrder(ERPNextTestSuite): @ERPNextTestSuite.change_settings( "Stock Settings", { @@ -2439,7 +2435,7 @@ class TestSalesOrder(ERPNextTestSuite, AccountsTestMixin): def test_credit_limit_on_so_reopning(self): # set credit limit company = "_Test Company" - customer = frappe.get_doc("Customer", self.customer) + customer = frappe.get_doc("Customer", "_Test Customer") customer.credit_limits = [] customer.append( "credit_limits", {"company": company, "credit_limit": 1000, "bypass_credit_limit_check": False} @@ -2447,35 +2443,33 @@ class TestSalesOrder(ERPNextTestSuite, AccountsTestMixin): customer.save() so1 = make_sales_order(qty=9, rate=100, do_not_submit=True) - so1.customer = self.customer + so1.customer = customer.name so1.save().submit() so1.update_status("Closed") so2 = make_sales_order(qty=9, rate=100, do_not_submit=True) - so2.customer = self.customer + so2.customer = customer.name so2.save().submit() self.assertRaises(frappe.ValidationError, so1.update_status, "Draft") @ERPNextTestSuite.change_settings("Stock Settings", {"enable_stock_reservation": True}) def test_warehouse_mapping_based_on_stock_reservation(self): - self.create_company(company_name="Glass Ceiling", abbr="GC") - self.create_item("Lamy Safari 2", True, self.warehouse_stores, self.company, 2000) - self.create_customer() - self.clear_old_entries() + warehouse = "Stores - _TC" + warehouse_finished = "Finished Goods - _TC" so = frappe.new_doc("Sales Order") - so.company = self.company - so.customer = self.customer + so.company = "_Test Company" + so.customer = "_Test Customer" so.transaction_date = today() so.append( "items", { - "item_code": self.item, + "item_code": "_Test Item", "qty": 10, "rate": 2000, - "warehouse": self.warehouse_stores, + "warehouse": "Stores - _TC", "delivery_date": today(), }, ) @@ -2485,12 +2479,12 @@ class TestSalesOrder(ERPNextTestSuite, AccountsTestMixin): se = frappe.get_doc( { "doctype": "Stock Entry", - "company": self.company, + "company": "_Test Company", "stock_entry_type": "Material Receipt", "posting_date": today(), "items": [ - {"item_code": self.item, "t_warehouse": self.warehouse_stores, "qty": 5}, - {"item_code": self.item, "t_warehouse": self.warehouse_finished_goods, "qty": 5}, + {"item_code": "_Test Item", "t_warehouse": warehouse, "qty": 5}, + {"item_code": "_Test Item", "t_warehouse": warehouse_finished, "qty": 5}, ], } ) @@ -2503,7 +2497,7 @@ class TestSalesOrder(ERPNextTestSuite, AccountsTestMixin): { "sales_order_item": itm.name, "item_code": itm.item_code, - "warehouse": self.warehouse_stores, + "warehouse": warehouse, "qty_to_reserve": 2, } ] @@ -2513,7 +2507,7 @@ class TestSalesOrder(ERPNextTestSuite, AccountsTestMixin): { "sales_order_item": itm.name, "item_code": itm.item_code, - "warehouse": self.warehouse_finished_goods, + "warehouse": warehouse_finished, "qty_to_reserve": 3, } ] @@ -2523,31 +2517,31 @@ class TestSalesOrder(ERPNextTestSuite, AccountsTestMixin): dn = make_delivery_note(so.name, kwargs={"for_reserved_stock": True}) self.assertEqual(2, len(dn.items)) self.assertEqual(dn.items[0].qty, 2) - self.assertEqual(dn.items[0].warehouse, self.warehouse_stores) + self.assertEqual(dn.items[0].warehouse, warehouse) self.assertEqual(dn.items[1].qty, 3) - self.assertEqual(dn.items[1].warehouse, self.warehouse_finished_goods) + self.assertEqual(dn.items[1].warehouse, warehouse_finished) from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse - warehouse = create_warehouse("Test Warehouse 1", company=self.company) + warehouse = create_warehouse("Test Warehouse 1", company="_Test Company") make_stock_entry( - item_code=self.item, + item_code="_Test Item", target=warehouse, qty=5, - company=self.company, + company="_Test Company", ) so = frappe.new_doc("Sales Order") so.reserve_stock = 1 - so.company = self.company - so.customer = self.customer + so.company = "_Test Company" + so.customer = "_Test Customer" so.transaction_date = today() so.currency = "INR" so.append( "items", { - "item_code": self.item, + "item_code": "_Test Item", "qty": 5, "rate": 2000, "warehouse": warehouse,