refactor(test): tax rule; removed setUpClass, tearDownClass

This commit is contained in:
ruthra kumar
2026-02-17 16:03:25 +05:30
parent aa998219b1
commit cb693e05bf
32 changed files with 60 additions and 184 deletions

View File

@@ -17,9 +17,7 @@ from erpnext.tests.utils import ERPNextTestSuite, if_lending_app_installed, if_l
class TestBankClearance(ERPNextTestSuite): class TestBankClearance(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls):
super().setUpClass()
create_warehouse( create_warehouse(
warehouse_name="_Test Warehouse", warehouse_name="_Test Warehouse",
properties={"parent_warehouse": "All Warehouses - _TC"}, properties={"parent_warehouse": "All Warehouses - _TC"},
@@ -28,7 +26,6 @@ class TestBankClearance(ERPNextTestSuite):
create_item("_Test Item") create_item("_Test Item")
create_cost_center(cost_center_name="_Test Cost Center", company="_Test Company") create_cost_center(cost_center_name="_Test Cost Center", company="_Test Company")
def setUp(self):
make_bank_account() make_bank_account()
add_transactions() add_transactions()

View File

@@ -9,11 +9,9 @@ from erpnext.tests.utils import ERPNextTestSuite
class FinancialReportTemplateTestCase(ERPNextTestSuite): class FinancialReportTemplateTestCase(ERPNextTestSuite):
"""Utility class with common setup and helper methods for all test classes""" """Utility class with common setup and helper methods for all test classes"""
@classmethod def setUp(self):
def setUpClass(cls):
"""Set up test data""" """Set up test data"""
super().setUpClass() self.create_test_template()
cls.create_test_template()
@classmethod @classmethod
def create_test_template(cls): def create_test_template(cls):

View File

@@ -14,9 +14,7 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestOpeningInvoiceCreationTool(ERPNextTestSuite): class TestOpeningInvoiceCreationTool(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls):
super().setUpClass()
if not frappe.db.exists("Company", "_Test Opening Invoice Company"): if not frappe.db.exists("Company", "_Test Opening Invoice Company"):
make_company() make_company()
create_dimension() create_dimension()

View File

@@ -24,14 +24,10 @@ from erpnext.tests.utils import ERPNextTestSuite
class POSInvoiceTestMixin(ERPNextTestSuite): class POSInvoiceTestMixin(ERPNextTestSuite):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.load_test_records("Stock Entry")
def setUp(self): def setUp(self):
from erpnext.accounts.doctype.pos_closing_entry.test_pos_closing_entry import init_user_and_profile from erpnext.accounts.doctype.pos_closing_entry.test_pos_closing_entry import init_user_and_profile
self.load_test_records("Stock Entry")
self.test_user, self.pos_profile = init_user_and_profile() self.test_user, self.pos_profile = init_user_and_profile()
if frappe.session.user != "Administrator": if frappe.session.user != "Administrator":

View File

@@ -15,23 +15,12 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestProcessStatementOfAccounts(AccountsTestMixin, ERPNextTestSuite): class TestProcessStatementOfAccounts(AccountsTestMixin, ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls): frappe.db.set_single_value("Selling Settings", "validate_selling_price", 0)
super().setUpClass()
letterhead = frappe.get_doc("Letter Head", "Company Letterhead - Grey") letterhead = frappe.get_doc("Letter Head", "Company Letterhead - Grey")
letterhead.is_default = 0 letterhead.is_default = 0
letterhead.save() letterhead.save()
cls.enterClassContext(cls.change_settings("Selling Settings", validate_selling_price=0))
@classmethod
def tearDownClass(cls):
super().tearDownClass()
letterhead = frappe.get_doc("Letter Head", "Company Letterhead - Grey")
letterhead.is_default = 1
letterhead.save()
frappe.db.commit() # nosemgrep
def setUp(self):
self.create_company() self.create_company()
self.create_customer() self.create_customer()
self.create_customer(customer_name="Other Customer") self.create_customer(customer_name="Other Customer")

View File

@@ -17,15 +17,11 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite): class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.enterClassContext(cls.change_settings("Selling Settings", validate_selling_price=0))
def setUp(self): def setUp(self):
self.create_company() self.create_company()
self.create_customer() self.create_customer()
self.create_item() self.create_item()
frappe.db.set_single_value("Selling Settings", "validate_selling_price", 0)
update_repost_settings() update_repost_settings()
def test_01_basic_functions(self): def test_01_basic_functions(self):

View File

@@ -52,6 +52,13 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestSalesInvoice(ERPNextTestSuite): class TestSalesInvoice(ERPNextTestSuite):
def setUp(self): def setUp(self):
self.make_employees()
self.make_sales_person()
self.load_test_records("Journal Entry")
self.load_test_records("Stock Entry")
self.load_test_records("Sales Invoice")
unlink_payment_on_cancel_of_invoice()
from erpnext.stock.doctype.stock_ledger_entry.test_stock_ledger_entry import create_items from erpnext.stock.doctype.stock_ledger_entry.test_stock_ledger_entry import create_items
create_items(["_Test Internal Transfer Item"], uoms=[{"uom": "Box", "conversion_factor": 10}]) create_items(["_Test Internal Transfer Item"], uoms=[{"uom": "Box", "conversion_factor": 10}])
@@ -93,21 +100,6 @@ class TestSalesInvoice(ERPNextTestSuite):
w.submit() w.submit()
return w return w
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.enterClassContext(cls.change_settings("Selling Settings", validate_selling_price=0))
cls.make_employees()
cls.make_sales_person()
cls.load_test_records("Journal Entry")
cls.load_test_records("Stock Entry")
cls.load_test_records("Sales Invoice")
unlink_payment_on_cancel_of_invoice()
@classmethod
def tearDownClass(self):
unlink_payment_on_cancel_of_invoice(0)
def test_sales_invoice_qty(self): def test_sales_invoice_qty(self):
si = create_sales_invoice(qty=0, do_not_save=True) si = create_sales_invoice(qty=0, do_not_save=True)
with self.assertRaises(InvalidQtyError): with self.assertRaises(InvalidQtyError):

View File

@@ -10,17 +10,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestTaxRule(ERPNextTestSuite): class TestTaxRule(ERPNextTestSuite):
@classmethod
def setUpClass(cls):
super().setUpClass()
frappe.db.set_single_value("Shopping Cart Settings", "enabled", 0)
@classmethod
def tearDownClass(cls):
frappe.db.sql("delete from `tabTax Rule`")
def setUp(self): def setUp(self):
frappe.db.sql("delete from `tabTax Rule`") frappe.db.set_single_value("Shopping Cart Settings", "enabled", 0)
def test_conflict(self): def test_conflict(self):
tax_rule1 = make_tax_rule( tax_rule1 = make_tax_rule(

View File

@@ -14,9 +14,7 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestTaxWithholdingCategory(ERPNextTestSuite): class TestTaxWithholdingCategory(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls):
super().setUpClass()
# create relevant supplier, etc # create relevant supplier, etc
create_records() create_records()
create_tax_withholding_category_records() create_tax_withholding_category_records()

View File

@@ -903,18 +903,9 @@ class TestAsset(AssetSetup):
class TestDepreciationMethods(AssetSetup): class TestDepreciationMethods(AssetSetup):
@classmethod def setUp(self):
def setUpClass(cls):
super().setUpClass()
cls._old_float_precision = frappe.db.get_single_value("System Settings", "float_precision")
frappe.db.set_single_value("System Settings", "float_precision", 2) frappe.db.set_single_value("System Settings", "float_precision", 2)
@classmethod
def tearDownClass(cls):
frappe.db.set_single_value("System Settings", "float_precision", cls._old_float_precision)
super().tearDownClass()
def test_schedule_for_straight_line_method(self): def test_schedule_for_straight_line_method(self):
asset = create_asset( asset = create_asset(
calculate_depreciation=1, calculate_depreciation=1,

View File

@@ -12,9 +12,7 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestAssetShiftAllocation(ERPNextTestSuite): class TestAssetShiftAllocation(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls):
super().setUpClass()
create_asset_shift_factors() create_asset_shift_factors()
def test_asset_shift_allocation(self): def test_asset_shift_allocation(self):

View File

@@ -14,10 +14,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestPurchaseOrder(ERPNextTestSuite): class TestPurchaseOrder(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls): self.load_test_records("Supplier Quotation")
super().setUpClass()
cls.load_test_records("Supplier Quotation")
def test_update_child_supplier_quotation_add_item(self): def test_update_child_supplier_quotation_add_item(self):
sq = frappe.copy_doc(self.globalTestRecords["Supplier Quotation"][0]) sq = frappe.copy_doc(self.globalTestRecords["Supplier Quotation"][0])

View File

@@ -27,12 +27,8 @@ def create_test_appointment():
class TestAppointment(ERPNextTestSuite): class TestAppointment(ERPNextTestSuite):
@classmethod
def setUpClass(cls):
super().setUpClass()
frappe.db.delete("Lead", {"email_id": LEAD_EMAIL})
def setUp(self): def setUp(self):
frappe.db.delete("Lead", {"email_id": LEAD_EMAIL})
self.test_appointment = create_test_appointment() self.test_appointment = create_test_appointment()
self.test_appointment.set_verified(self.test_appointment.customer_email) self.test_appointment.set_verified(self.test_appointment.customer_email)

View File

@@ -12,13 +12,11 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestOpportunity(ERPNextTestSuite): class TestOpportunity(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls):
super().setUpClass()
# Only first lead is required # Only first lead is required
# TODO: dynamically generate limited test records # TODO: dynamically generate limited test records
cls.make_leads() self.make_leads()
cls.make_opportunities() self.make_opportunities()
@classmethod @classmethod
def make_opportunities(cls): def make_opportunities(cls):

View File

@@ -8,9 +8,7 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestOpportunitySummaryBySalesStage(ERPNextTestSuite): class TestOpportunitySummaryBySalesStage(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls):
super().setUpClass()
create_opportunity() create_opportunity()
def test_opportunity_summary_by_sales_stage(self): def test_opportunity_summary_by_sales_stage(self):

View File

@@ -24,10 +24,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestBOM(ERPNextTestSuite): class TestBOM(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls): self.load_test_records("BOM")
super().setUpClass()
cls.load_test_records("BOM")
@timeout @timeout
def test_get_items(self): def test_get_items(self):

View File

@@ -17,12 +17,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestBOMUpdateLog(ERPNextTestSuite): class TestBOMUpdateLog(ERPNextTestSuite):
"Test BOM Update Tool Operations via BOM Update Log." "Test BOM Update Tool Operations via BOM Update Log."
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.load_test_records("BOM")
def setUp(self): def setUp(self):
self.load_test_records("BOM")
bom_doc = frappe.copy_doc(self.globalTestRecords["BOM"][0]) bom_doc = frappe.copy_doc(self.globalTestRecords["BOM"][0])
bom_doc.items[1].item_code = "_Test Item" bom_doc.items[1].item_code = "_Test Item"
bom_doc.insert() bom_doc.insert()

View File

@@ -16,10 +16,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestBOMUpdateTool(ERPNextTestSuite): class TestBOMUpdateTool(ERPNextTestSuite):
"Test major functions run via BOM Update Tool." "Test major functions run via BOM Update Tool."
@classmethod def setUp(self):
def setUpClass(cls): self.load_test_records("BOM")
super().setUpClass()
cls.load_test_records("BOM")
@timeout @timeout
def test_replace_bom(self): def test_replace_bom(self):

View File

@@ -27,12 +27,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestJobCard(ERPNextTestSuite): class TestJobCard(ERPNextTestSuite):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.load_test_records("BOM")
def setUp(self): def setUp(self):
self.load_test_records("BOM")
self.make_employees() # used in job card time log self.make_employees() # used in job card time log
self.make_bom_for_jc_tests() self.make_bom_for_jc_tests()
self.transfer_material_against: Literal["Work Order", "Job Card"] = "Work Order" self.transfer_material_against: Literal["Work Order", "Job Card"] = "Work Order"

View File

@@ -9,14 +9,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestRouting(ERPNextTestSuite): class TestRouting(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls): self.item_code = "Test Routing Item - A"
super().setUpClass()
cls.item_code = "Test Routing Item - A"
@classmethod
def tearDownClass(cls):
frappe.db.sql("delete from tabBOM where item=%s", cls.item_code)
def test_sequence_id(self): def test_sequence_id(self):
operations = [ operations = [

View File

@@ -8,12 +8,10 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestActivityCost(ERPNextTestSuite): class TestActivityCost(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls):
super().setUpClass()
# TODO: only 1 employee is required # TODO: only 1 employee is required
cls.make_employees() self.make_employees()
cls.make_activity_type() self.make_activity_type()
def test_duplication(self): def test_duplication(self):
frappe.db.sql("delete from `tabActivity Cost`") frappe.db.sql("delete from `tabActivity Cost`")

View File

@@ -13,10 +13,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestQuotation(ERPNextTestSuite): class TestQuotation(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls): self.load_test_records("Quotation")
super().setUpClass()
cls.load_test_records("Quotation")
def test_update_child_quotation_add_item(self): def test_update_child_quotation_add_item(self):
from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.doctype.item.test_item import make_item

View File

@@ -36,21 +36,6 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite): class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.unlink_setting = int(
frappe.db.get_single_value("Accounts Settings", "unlink_advance_payment_on_cancelation_of_order")
)
@classmethod
def tearDownClass(cls) -> None:
# reset config to previous state
frappe.db.set_single_value(
"Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", cls.unlink_setting
)
super().tearDownClass()
def setUp(self): def setUp(self):
self.create_customer("_Test Customer Credit") self.create_customer("_Test Customer Credit")
@@ -141,7 +126,9 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
so.reload() so.reload()
self.assertEqual(so.status, "Completed") self.assertEqual(so.status, "Completed")
@ERPNextTestSuite.change_settings("Selling Settings", {"allow_multiple_items": 1, "allow_negative_rates_for_items": 1}) @ERPNextTestSuite.change_settings(
"Selling Settings", {"allow_multiple_items": 1, "allow_negative_rates_for_items": 1}
)
def test_sales_order_with_negative_rate(self): def test_sales_order_with_negative_rate(self):
""" """
Test if negative rate is allowed in Sales Order via doc submission and update items Test if negative rate is allowed in Sales Order via doc submission and update items

View File

@@ -45,10 +45,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestDeliveryNote(ERPNextTestSuite): class TestDeliveryNote(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls): self.load_test_records("Stock Entry")
super().setUpClass()
cls.load_test_records("Stock Entry")
def test_delivery_note_qty(self): def test_delivery_note_qty(self):
dn = create_delivery_note(qty=0, do_not_save=True) dn = create_delivery_note(qty=0, do_not_save=True)

View File

@@ -11,10 +11,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestItemPrice(ERPNextTestSuite): class TestItemPrice(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls): self.load_test_records("Item Price")
super().setUpClass()
cls.load_test_records("Item Price")
def test_template_item_price(self): def test_template_item_price(self):
from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.doctype.item.test_item import make_item

View File

@@ -24,10 +24,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestLandedCostVoucher(ERPNextTestSuite): class TestLandedCostVoucher(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls): self.load_test_records("Currency Exchange")
super().setUpClass()
cls.load_test_records("Currency Exchange")
def test_landed_cost_voucher(self): def test_landed_cost_voucher(self):
frappe.db.set_single_value("Buying Settings", "allow_multiple_items", 1) frappe.db.set_single_value("Buying Settings", "allow_multiple_items", 1)

View File

@@ -24,10 +24,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestMaterialRequest(ERPNextTestSuite): class TestMaterialRequest(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls): self.load_test_records("Material Request")
super().setUpClass()
cls.load_test_records("Material Request")
def test_material_request_qty(self): def test_material_request_qty(self):
mr = frappe.copy_doc(self.globalTestRecords["Material Request"][0]) mr = frappe.copy_doc(self.globalTestRecords["Material Request"][0])

View File

@@ -29,13 +29,9 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestPurchaseReceipt(ERPNextTestSuite): class TestPurchaseReceipt(ERPNextTestSuite):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.load_test_records("Purchase Receipt")
def setUp(self): def setUp(self):
frappe.local.future_sle = {} frappe.local.future_sle = {}
self.load_test_records("Purchase Receipt")
def test_purchase_receipt_qty(self): def test_purchase_receipt_qty(self):
pr = make_purchase_receipt(qty=0, rejected_qty=0, do_not_save=True) pr = make_purchase_receipt(qty=0, rejected_qty=0, do_not_save=True)

View File

@@ -23,10 +23,8 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestSerialNo(ERPNextTestSuite): class TestSerialNo(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls): self.load_test_records("Stock Entry")
super().setUpClass()
cls.load_test_records("Stock Entry")
def test_cannot_create_direct(self): def test_cannot_create_direct(self):
frappe.delete_doc_if_exists("Serial No", "_TCSER0001") frappe.delete_doc_if_exists("Serial No", "_TCSER0001")

View File

@@ -34,10 +34,6 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestStockReconciliation(ERPNextTestSuite, StockTestMixin): class TestStockReconciliation(ERPNextTestSuite, StockTestMixin):
@classmethod
def setUpClass(cls):
super().setUpClass()
def setUp(self): def setUp(self):
frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1) frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
frappe.local.future_sle = {} frappe.local.future_sle = {}

View File

@@ -310,10 +310,8 @@ class TestLIFOValuationSLE(ERPNextTestSuite):
ITEM_CODE = "_Test LIFO item" ITEM_CODE = "_Test LIFO item"
WAREHOUSE = "_Test Warehouse - _TC" WAREHOUSE = "_Test Warehouse - _TC"
@classmethod def setUp(self) -> None:
def setUpClass(cls) -> None: make_item(self.ITEM_CODE, {"valuation_method": "LIFO"})
super().setUpClass()
make_item(cls.ITEM_CODE, {"valuation_method": "LIFO"})
def _make_stock_entry(self, qty, rate=None): def _make_stock_entry(self, qty, rate=None):
kwargs = { kwargs = {

View File

@@ -13,19 +13,16 @@ months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct",
class TestIssueAnalytics(ERPNextTestSuite): class TestIssueAnalytics(ERPNextTestSuite):
@classmethod def setUp(self):
def setUpClass(cls):
super().setUpClass()
frappe.db.sql("delete from `tabIssue` where company='_Test Company'")
frappe.db.set_single_value("Support Settings", "track_service_level_agreement", 1) frappe.db.set_single_value("Support Settings", "track_service_level_agreement", 1)
current_month_date = getdate() current_month_date = getdate()
last_month_date = add_months(current_month_date, -1) last_month_date = add_months(current_month_date, -1)
cls.current_month = str(months[current_month_date.month - 1]).lower() self.current_month = str(months[current_month_date.month - 1]).lower()
cls.last_month = str(months[last_month_date.month - 1]).lower() self.last_month = str(months[last_month_date.month - 1]).lower()
if current_month_date.year != last_month_date.year: if current_month_date.year != last_month_date.year:
cls.current_month += "_" + str(current_month_date.year) self.current_month += "_" + str(current_month_date.year)
cls.last_month += "_" + str(last_month_date.year) self.last_month += "_" + str(last_month_date.year)
def test_issue_analytics(self): def test_issue_analytics(self):
create_service_level_agreements_for_issues() create_service_level_agreements_for_issues()