diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py
index 838ef38..4d65337 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py
@@ -5,10 +5,10 @@
 from __future__ import unicode_literals
 import unittest
 import frappe
-from frappe.utils import flt, get_datetime, time_diff_in_hours, now, add_days
+from frappe.utils import flt, time_diff_in_hours, now, add_days
 from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
 from erpnext.manufacturing.doctype.production_order.production_order \
-	import make_stock_entry, make_time_log, ProductionNotApplicableError,ItemHasVariantError
+	import make_stock_entry, ProductionNotApplicableError,ItemHasVariantError
 from erpnext.stock.doctype.stock_entry import test_stock_entry
 from erpnext.projects.doctype.time_log.time_log import OverProductionLoggedError
 
@@ -68,6 +68,7 @@
 		self.assertRaises(StockOverProductionError, s.submit)
 
 	def test_make_time_log(self):
+		from erpnext.projects.doctype.time_log.test_time_log import make_time_log_test_record
 		prod_order = make_prod_order_test_record(item="_Test FG Item 2",
 			planned_start_date=now(), qty=1, do_not_save=True)
 
@@ -79,17 +80,13 @@
 
 		d.completed_qty = flt(d.completed_qty)
 
-		time_log = make_time_log(prod_order.name, d.operation, \
-			d.planned_start_time, d.planned_end_time, prod_order.qty - d.completed_qty,
-			operation_id=d.name)
+		time_log = make_time_log_test_record(hours=1, production_order= prod_order.name, operation= d.operation,
+			completed_qty= prod_order.qty - d.completed_qty, operation_id=d.name, for_manufacturing=1, simulate=True)
 
 		self.assertEqual(prod_order.name, time_log.production_order)
 		self.assertEqual((prod_order.qty - d.completed_qty), time_log.completed_qty)
 		self.assertEqual(time_diff_in_hours(d.planned_end_time, d.planned_start_time),time_log.hours)
-
-		time_log.save()
-		time_log.submit()
-
+		
 		manufacturing_settings = frappe.get_doc({
 			"doctype": "Manufacturing Settings",
 			"allow_production_on_holidays": 0
@@ -101,11 +98,6 @@
 		self.assertEqual(prod_order.operations[0].status, "Completed")
 		self.assertEqual(prod_order.operations[0].completed_qty, prod_order.qty)
 
-		self.assertEqual(get_datetime(prod_order.operations[0].actual_start_time),
-			get_datetime(time_log.from_time))
-		self.assertEqual(get_datetime(prod_order.operations[0].actual_end_time),
-			get_datetime(time_log.to_time))
-
 		self.assertEqual(prod_order.operations[0].actual_operation_time, 60)
 		self.assertEqual(prod_order.operations[0].actual_operating_cost, 100)
 
@@ -118,13 +110,9 @@
 		self.assertEqual(flt(prod_order.operations[0].actual_operation_time), 0)
 		self.assertEqual(flt(prod_order.operations[0].actual_operating_cost), 0)
 
-		time_log2 = frappe.copy_doc(time_log)
-		time_log2.update({
-			"completed_qty": 10,
-			"from_time": now(),
-			"to_time": add_days(now(), 1),
-			"docstatus": 0
-		})
+		time_log2 = make_time_log_test_record(from_time= add_days(time_log.to_time, 1) ,production_order= prod_order.name, operation= d.operation,
+			completed_qty= 5, operation_id=d.name, for_manufacturing=1, do_not_save=True)
+
 		self.assertRaises(OverProductionLoggedError, time_log2.save)
 
 	def test_planned_operating_cost(self):
diff --git a/erpnext/projects/doctype/time_log/test_time_log.py b/erpnext/projects/doctype/time_log/test_time_log.py
index c9cc51e..9bdf588 100644
--- a/erpnext/projects/doctype/time_log/test_time_log.py
+++ b/erpnext/projects/doctype/time_log/test_time_log.py
@@ -14,15 +14,12 @@
 
 class TestTimeLog(unittest.TestCase):
 	def test_duplication(self):
-		date = now_datetime()
-		tl1 = make_time_log_test_record(user= "test@example.com", employee= "_T-Employee-0002",
-			from_time= date, to_time= date + datetime.timedelta(seconds=1))
+		tl1 = make_time_log_test_record(user= "test@example.com", employee= "_T-Employee-0002", simulate= True)
 
 		tl2 = make_time_log_test_record(user= "test@example.com", employee= "_T-Employee-0002",
-			from_time= date, to_time= date + datetime.timedelta(seconds=1), do_not_save= 1)
+			from_time= tl1.from_time, to_time= tl1.to_time, do_not_save= 1)
 
 		self.assertRaises(OverlapError, tl2.insert)
-		tl1.cancel()
 
 	def test_production_order_status(self):
 		prod_order = make_prod_order_test_record(item= "_Test FG Item 2", qty= 1, do_not_submit= True)
@@ -30,7 +27,7 @@
 		prod_order.save()
 
 		time_log = make_time_log_test_record(for_manufacturing= 1, production_order= prod_order.name, qty= 1, 
-			employee= "_T-Employee-0003", do_not_save= True)
+			employee= "_T-Employee-0003", do_not_save= True, simulate=1)
 
 		self.assertRaises(NotSubmittedError, time_log.save)
 
@@ -114,11 +111,8 @@
 	time_log = frappe.new_doc("Time Log")
 	
 	time_log.from_time = args.from_time or now_datetime()
-	time_log.to_time = args.to_time or time_log.from_time + datetime.timedelta(seconds=1)
-	
-	if args.hours>0:
-		time_log.hours = args.hours
-		time_log.to_time = time_log.from_time + datetime.timedelta(hours= args.hours)
+	time_log.hours = args.hours or 1
+	time_log.to_time = args.to_time or time_log.from_time + datetime.timedelta(hours= time_log.hours)
 	
 	time_log.project = args.project
 	time_log.task = args.task
@@ -127,14 +121,23 @@
 	time_log.operation = args.operation
 	time_log.operation_id = args.operation_id
 	time_log.workstation = args.workstation
-	time_log.qty = args.qty or 1
+	time_log.completed_qty = args.completed_qty
 	time_log.activity_type = args.activity_type or "_Test Activity Type"
 	time_log.billable = args.billable or 1
 	time_log.employee = args.employee
 	time_log.user = args.user
 	
 	if not args.do_not_save:
-		time_log.insert()
+		if args.simulate:
+			while True:
+				try:
+					time_log.save()
+					break
+				except OverlapError:
+					time_log.from_time = time_log.from_time + datetime.timedelta(minutes=10)
+					time_log.to_time = time_log.from_time + datetime.timedelta(hours= time_log.hours)
+		else:
+			time_log.save()
 		if not args.do_not_submit:
 			time_log.submit()
 
diff --git a/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py b/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py
index 1166c76..9f3591d 100644
--- a/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py
+++ b/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py
@@ -7,7 +7,7 @@
 
 class TimeLogBatchTest(unittest.TestCase):
 	def test_time_log_status(self):
-		time_log = make_time_log_test_record(employee= "_T-Employee-0002")
+		time_log = make_time_log_test_record(simulate=True)
 
 		self.assertEquals(frappe.db.get_value("Time Log", time_log.name, "status"), "Submitted")
 
