diff --git a/scripts/test_config_fixer.py b/scripts/test_config_fixer.py
index 7bb4b52..32d5b17 100644
--- a/scripts/test_config_fixer.py
+++ b/scripts/test_config_fixer.py
@@ -37,6 +37,8 @@
                       help=('AndroidManifest.xml that contains the original package name'))
   parser.add_argument('--package-name', default='', dest='package_name',
                       help=('overwrite package fields in the test config'))
+  parser.add_argument('--test-file-name', default='', dest='test_file_name',
+                      help=('overwrite test file name in the test config'))
   parser.add_argument('input', help='input test config file')
   parser.add_argument('output', help='output test config file')
   return parser.parse_args()
@@ -46,7 +48,6 @@
 
   manifest = parse_manifest(manifest_doc)
   original_package = manifest.getAttribute('package')
-  print('package: ' + original_package)
 
   test_config = parse_test_config(test_config_doc)
   tests = get_children_with_tag(test_config, 'test')
@@ -57,6 +58,18 @@
       if option.getAttribute('name') == "package" and option.getAttribute('value') == original_package:
         option.setAttribute('value', package_name)
 
+def overwrite_test_file_name(test_config_doc, test_file_name):
+
+  test_config = parse_test_config(test_config_doc)
+  tests = get_children_with_tag(test_config, 'target_preparer')
+
+  for test in tests:
+    if test.getAttribute('class') == "com.android.tradefed.targetprep.TestAppInstallSetup":
+      options = get_children_with_tag(test, 'option')
+      for option in options:
+        if option.getAttribute('name') == "test-file-name":
+          option.setAttribute('value', test_file_name)
+
 def main():
   """Program entry point."""
   try:
@@ -70,6 +83,9 @@
       manifest_doc = minidom.parse(args.manifest)
       overwrite_package_name(doc, manifest_doc, args.package_name)
 
+    if args.test_file_name:
+      overwrite_test_file_name(doc, args.test_file_name)
+
     with open(args.output, 'wb') as f:
       write_xml(f, doc)
 
