diff --git a/test/core/http/BUILD b/test/core/http/BUILD
index a5ae627..c2ed1cd 100644
--- a/test/core/http/BUILD
+++ b/test/core/http/BUILD
@@ -66,7 +66,12 @@
     name = "httpcli_test",
     srcs = ["httpcli_test.cc"],
     language = "C++",
-    data = ["test_server.py"],
+    data = [
+        "python_wrapper.sh",
+        "test_server.py",
+        "//src/core/tsi/test_creds:server1.pem",
+        "//src/core/tsi/test_creds:server1.key"
+    ],
     deps = [
         "//:gpr",
         "//:grpc",
@@ -80,7 +85,12 @@
     name = "httpscli_test",
     srcs = ["httpscli_test.cc"],
     language = "C++",
-    data = ["test_server.py"],
+    data = [
+        "python_wrapper.sh",
+        "test_server.py",
+        "//src/core/tsi/test_creds:server1.pem",
+        "//src/core/tsi/test_creds:server1.key"
+    ],
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/http/httpcli_test.cc b/test/core/http/httpcli_test.cc
index 259e3aa..a8853c8 100644
--- a/test/core/http/httpcli_test.cc
+++ b/test/core/http/httpcli_test.cc
@@ -154,10 +154,17 @@
     int arg_shift = 0;
     /* figure out where we are */
     char* root;
-    if (lslash) {
-      root = static_cast<char*>(gpr_malloc((size_t)(lslash - me + 1)));
+    if (lslash != nullptr) {
+      /* Hack for bazel target */
+      if (lslash - me >= (unsigned)(sizeof("http") - 1) &&
+          strncmp(me + (lslash - me) - sizeof("http") + 1, "http",
+                  sizeof("http") - 1) == 0) {
+        lslash = me + (lslash - me) - sizeof("http");
+      }
+      root = static_cast<char*>(
+          gpr_malloc((size_t)(lslash - me + sizeof("/../.."))));
       memcpy(root, me, (size_t)(lslash - me));
-      root[lslash - me] = 0;
+      memcpy(root + (lslash - me), "/../..", sizeof("/../.."));
     } else {
       root = gpr_strdup(".");
     }
@@ -167,8 +174,8 @@
       args[0] = gpr_strdup(argv[1]);
     } else {
       arg_shift = 1;
-      gpr_asprintf(&args[0], "%s/../../tools/distrib/python_wrapper.sh", root);
-      gpr_asprintf(&args[1], "%s/../../test/core/http/test_server.py", root);
+      gpr_asprintf(&args[0], "%s/test/core/http/python_wrapper.sh", root);
+      gpr_asprintf(&args[1], "%s/test/core/http/test_server.py", root);
     }
 
     /* start the server */
diff --git a/test/core/http/httpscli_test.cc b/test/core/http/httpscli_test.cc
index adf69f1..5f497fc 100644
--- a/test/core/http/httpscli_test.cc
+++ b/test/core/http/httpscli_test.cc
@@ -152,10 +152,17 @@
   int arg_shift = 0;
   /* figure out where we are */
   char* root;
-  if (lslash) {
-    root = static_cast<char*>(gpr_malloc((size_t)(lslash - me + 1)));
+  if (lslash != nullptr) {
+    /* Hack for bazel target */
+    if (lslash - me >= (unsigned)(sizeof("http") - 1) &&
+        strncmp(me + (lslash - me) - sizeof("http") + 1, "http",
+                sizeof("http") - 1) == 0) {
+      lslash = me + (lslash - me) - sizeof("http");
+    }
+    root = static_cast<char*>(
+        gpr_malloc((size_t)(lslash - me + sizeof("/../.."))));
     memcpy(root, me, (size_t)(lslash - me));
-    root[lslash - me] = 0;
+    memcpy(root + (lslash - me), "/../..", sizeof("/../.."));
   } else {
     root = gpr_strdup(".");
   }
@@ -165,8 +172,8 @@
     args[0] = gpr_strdup(argv[1]);
   } else {
     arg_shift = 1;
-    gpr_asprintf(&args[0], "%s/../../tools/distrib/python_wrapper.sh", root);
-    gpr_asprintf(&args[1], "%s/../../test/core/http/test_server.py", root);
+    gpr_asprintf(&args[0], "%s/test/core/http/python_wrapper.sh", root);
+    gpr_asprintf(&args[1], "%s/test/core/http/test_server.py", root);
   }
 
   /* start the server */
diff --git a/test/core/http/python_wrapper.sh b/test/core/http/python_wrapper.sh
new file mode 120000
index 0000000..9ed6e32
--- /dev/null
+++ b/test/core/http/python_wrapper.sh
@@ -0,0 +1 @@
+../../../tools/distrib/python_wrapper.sh
\ No newline at end of file
