|  | 
 |  | 
 | <!DOCTYPE html> | 
 |  | 
 |  | 
 | <html > | 
 |  | 
 |   <head> | 
 |     <meta charset="utf-8" /> | 
 |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> | 
 |  | 
 |     <title>Testing PySpark — PySpark 4.0.0-preview1 documentation</title> | 
 |    | 
 |    | 
 |    | 
 |   <script data-cfasync="false"> | 
 |     document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; | 
 |     document.documentElement.dataset.theme = localStorage.getItem("theme") || "light"; | 
 |   </script> | 
 |    | 
 |   <!-- Loaded before other Sphinx assets --> | 
 |   <link href="../_static/styles/theme.css?digest=e353d410970836974a52" rel="stylesheet" /> | 
 | <link href="../_static/styles/bootstrap.css?digest=e353d410970836974a52" rel="stylesheet" /> | 
 | <link href="../_static/styles/pydata-sphinx-theme.css?digest=e353d410970836974a52" rel="stylesheet" /> | 
 |  | 
 |    | 
 |   <link href="../_static/vendor/fontawesome/6.1.2/css/all.min.css?digest=e353d410970836974a52" rel="stylesheet" /> | 
 |   <link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2" /> | 
 | <link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2" /> | 
 | <link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2" /> | 
 |  | 
 |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | 
 |     <link rel="stylesheet" type="text/css" href="../_static/copybutton.css" /> | 
 |     <link rel="stylesheet" type="text/css" href="../_static/css/pyspark.css" /> | 
 |    | 
 |   <!-- Pre-loaded scripts that we'll load fully later --> | 
 |   <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=e353d410970836974a52" /> | 
 | <link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52" /> | 
 |  | 
 |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | 
 |     <script src="../_static/jquery.js"></script> | 
 |     <script src="../_static/underscore.js"></script> | 
 |     <script src="../_static/doctools.js"></script> | 
 |     <script src="../_static/clipboard.min.js"></script> | 
 |     <script src="../_static/copybutton.js"></script> | 
 |     <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script> | 
 |     <script>DOCUMENTATION_OPTIONS.pagename = 'development/testing';</script> | 
 |     <link rel="canonical" href="https://spark.apache.org/docs/latest/api/python/development/testing.html" /> | 
 |     <link rel="search" title="Search" href="../search.html" /> | 
 |     <link rel="next" title="Debugging PySpark" href="debugging.html" /> | 
 |     <link rel="prev" title="Contributing to PySpark" href="contributing.html" /> | 
 |     <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
 |     <meta name="docsearch:language" content="None"> | 
 |      | 
 |  | 
 |     <!-- Matomo --> | 
 |     <script type="text/javascript"> | 
 |         var _paq = window._paq = window._paq || []; | 
 |         /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ | 
 |         _paq.push(["disableCookies"]); | 
 |         _paq.push(['trackPageView']); | 
 |         _paq.push(['enableLinkTracking']); | 
 |         (function() { | 
 |             var u="https://analytics.apache.org/"; | 
 |             _paq.push(['setTrackerUrl', u+'matomo.php']); | 
 |             _paq.push(['setSiteId', '40']); | 
 |             var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; | 
 |             g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); | 
 |         })(); | 
 |     </script> | 
 |     <!-- End Matomo Code --> | 
 |  | 
 |   </head> | 
 |    | 
 |    | 
 |   <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> | 
 |  | 
 |    | 
 |    | 
 |   <a class="skip-link" href="#main-content">Skip to main content</a> | 
 |    | 
 |   <input type="checkbox" | 
 |           class="sidebar-toggle" | 
 |           name="__primary" | 
 |           id="__primary"/> | 
 |   <label class="overlay overlay-primary" for="__primary"></label> | 
 |    | 
 |   <input type="checkbox" | 
 |           class="sidebar-toggle" | 
 |           name="__secondary" | 
 |           id="__secondary"/> | 
 |   <label class="overlay overlay-secondary" for="__secondary"></label> | 
 |    | 
 |   <div class="search-button__wrapper"> | 
 |     <div class="search-button__overlay"></div> | 
 |     <div class="search-button__search-container"> | 
 | <form class="bd-search d-flex align-items-center" | 
 |       action="../search.html" | 
 |       method="get"> | 
 |   <i class="fa-solid fa-magnifying-glass"></i> | 
 |   <input type="search" | 
 |          class="form-control" | 
 |          name="q" | 
 |          id="search-input" | 
 |          placeholder="Search the docs ..." | 
 |          aria-label="Search the docs ..." | 
 |          autocomplete="off" | 
 |          autocorrect="off" | 
 |          autocapitalize="off" | 
 |          spellcheck="false"/> | 
 |   <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> | 
 | </form></div> | 
 |   </div> | 
 |    | 
 |     <nav class="bd-header navbar navbar-expand-lg bd-navbar"> | 
 | <div class="bd-header__inner bd-page-width"> | 
 |   <label class="sidebar-toggle primary-toggle" for="__primary"> | 
 |     <span class="fa-solid fa-bars"></span> | 
 |   </label> | 
 |    | 
 |   <div class="navbar-header-items__start"> | 
 |      | 
 |       <div class="navbar-item"> | 
 |    | 
 |  | 
 | <a class="navbar-brand logo" href="../index.html"> | 
 |    | 
 |    | 
 |    | 
 |    | 
 |      | 
 |      | 
 |        | 
 |      | 
 |      | 
 |     <img src="../_static/spark-logo-light.png" class="logo__image only-light" alt="Logo image"/> | 
 |     <script>document.write(`<img src="../_static/spark-logo-dark.png" class="logo__image only-dark" alt="Logo image"/>`);</script> | 
 |    | 
 |    | 
 | </a></div> | 
 |      | 
 |   </div> | 
 |    | 
 |    | 
 |   <div class="col-lg-9 navbar-header-items"> | 
 |      | 
 |     <div class="me-auto navbar-header-items__center"> | 
 |        | 
 |         <div class="navbar-item"><nav class="navbar-nav"> | 
 |   <p class="sidebar-header-items__title" | 
 |      role="heading" | 
 |      aria-level="1" | 
 |      aria-label="Site Navigation"> | 
 |     Site Navigation | 
 |   </p> | 
 |   <ul class="bd-navbar-elements navbar-nav"> | 
 |      | 
 |                     <li class="nav-item"> | 
 |                       <a class="nav-link nav-internal" href="../index.html"> | 
 |                         Overview | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |  | 
 |                     <li class="nav-item"> | 
 |                       <a class="nav-link nav-internal" href="../getting_started/index.html"> | 
 |                         Getting Started | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |  | 
 |                     <li class="nav-item"> | 
 |                       <a class="nav-link nav-internal" href="../user_guide/index.html"> | 
 |                         User Guides | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |  | 
 |                     <li class="nav-item"> | 
 |                       <a class="nav-link nav-internal" href="../reference/index.html"> | 
 |                         API Reference | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |  | 
 |                     <li class="nav-item current active"> | 
 |                       <a class="nav-link nav-internal" href="index.html"> | 
 |                         Development | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |  | 
 |                     <li class="nav-item"> | 
 |                       <a class="nav-link nav-internal" href="../migration_guide/index.html"> | 
 |                         Migration Guides | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |   </ul> | 
 | </nav></div> | 
 |        | 
 |     </div> | 
 |      | 
 |      | 
 |     <div class="navbar-header-items__end"> | 
 |        | 
 |         <div class="navbar-item navbar-persistent--container"> | 
 |            | 
 | <script> | 
 | document.write(` | 
 |   <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | 
 |     <i class="fa-solid fa-magnifying-glass"></i> | 
 |   </button> | 
 | `); | 
 | </script> | 
 |         </div> | 
 |        | 
 |        | 
 |         <div class="navbar-item"><!-- | 
 | Licensed to the Apache Software Foundation (ASF) under one or more | 
 | contributor license agreements.  See the NOTICE file distributed with | 
 | this work for additional information regarding copyright ownership. | 
 | The ASF licenses this file to You under the Apache License, Version 2.0 | 
 | (the "License"); you may not use this file except in compliance with | 
 | the License.  You may obtain a copy of the License at | 
 |  | 
 | http://www.apache.org/licenses/LICENSE-2.0 | 
 |  | 
 | Unless required by applicable law or agreed to in writing, software | 
 | distributed under the License is distributed on an "AS IS" BASIS, | 
 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | See the License for the specific language governing permissions and | 
 | limitations under the License. | 
 | --> | 
 |  | 
 | <div id="version-button" class="dropdown"> | 
 |     <button type="button" class="btn btn-secondary btn-sm navbar-btn dropdown-toggle" id="version_switcher_button" data-toggle="dropdown"> | 
 |         4.0.0-preview1 | 
 |         <span class="caret"></span> | 
 |     </button> | 
 |     <div id="version_switcher" class="dropdown-menu list-group-flush py-0" aria-labelledby="version_switcher_button"> | 
 |     <!-- dropdown will be populated by javascript on page load --> | 
 |     </div> | 
 | </div> | 
 |  | 
 | <script type="text/javascript"> | 
 | // Function to construct the target URL from the JSON components | 
 | function buildURL(entry) { | 
 |     var template = "https://spark.apache.org/docs/{version}/api/python/index.html";  // supplied by jinja | 
 |     template = template.replace("{version}", entry.version); | 
 |     return template; | 
 | } | 
 |  | 
 | // Function to check if corresponding page path exists in other version of docs | 
 | // and, if so, go there instead of the homepage of the other docs version | 
 | function checkPageExistsAndRedirect(event) { | 
 |     const currentFilePath = "development/testing.html", | 
 |           otherDocsHomepage = event.target.getAttribute("href"); | 
 |     let tryUrl = `${otherDocsHomepage}${currentFilePath}`; | 
 |     $.ajax({ | 
 |         type: 'HEAD', | 
 |         url: tryUrl, | 
 |         // if the page exists, go there | 
 |         success: function() { | 
 |             location.href = tryUrl; | 
 |         } | 
 |     }).fail(function() { | 
 |         location.href = otherDocsHomepage; | 
 |     }); | 
 |     return false; | 
 | } | 
 |  | 
 | // Function to populate the version switcher | 
 | (function () { | 
 |     // get JSON config | 
 |     $.getJSON("https://spark.apache.org/static/versions.json", function(data, textStatus, jqXHR) { | 
 |         // create the nodes first (before AJAX calls) to ensure the order is | 
 |         // correct (for now, links will go to doc version homepage) | 
 |         $.each(data, function(index, entry) { | 
 |             // if no custom name specified (e.g., "latest"), use version string | 
 |             if (!("name" in entry)) { | 
 |                 entry.name = entry.version; | 
 |             } | 
 |             // construct the appropriate URL, and add it to the dropdown | 
 |             entry.url = buildURL(entry); | 
 |             const node = document.createElement("a"); | 
 |             node.setAttribute("class", "list-group-item list-group-item-action py-1"); | 
 |             node.setAttribute("href", `${entry.url}`); | 
 |             node.textContent = `${entry.name}`; | 
 |             node.onclick = checkPageExistsAndRedirect; | 
 |             $("#version_switcher").append(node); | 
 |         }); | 
 |     }); | 
 | })(); | 
 | </script></div> | 
 |        | 
 |         <div class="navbar-item"> | 
 | <script> | 
 | document.write(` | 
 |   <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> | 
 |     <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span> | 
 |     <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span> | 
 |     <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span> | 
 |   </button> | 
 | `); | 
 | </script></div> | 
 |        | 
 |         <div class="navbar-item"><ul class="navbar-icon-links navbar-nav" | 
 |     aria-label="Icon Links"> | 
 |         <li class="nav-item"> | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |           <a href="https://github.com/apache/spark" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-github"></i></span> | 
 |             <label class="sr-only">GitHub</label></a> | 
 |         </li> | 
 |         <li class="nav-item"> | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |           <a href="https://pypi.org/project/pyspark" title="PyPI" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-solid fa-box"></i></span> | 
 |             <label class="sr-only">PyPI</label></a> | 
 |         </li> | 
 | </ul></div> | 
 |        | 
 |     </div> | 
 |      | 
 |   </div> | 
 |    | 
 |    | 
 |     <div class="navbar-persistent--mobile"> | 
 | <script> | 
 | document.write(` | 
 |   <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> | 
 |     <i class="fa-solid fa-magnifying-glass"></i> | 
 |   </button> | 
 | `); | 
 | </script> | 
 |     </div> | 
 |    | 
 |  | 
 |    | 
 |     <label class="sidebar-toggle secondary-toggle" for="__secondary"> | 
 |       <span class="fa-solid fa-outdent"></span> | 
 |     </label> | 
 |    | 
 | </div> | 
 |  | 
 |     </nav> | 
 |    | 
 |   <div class="bd-container"> | 
 |     <div class="bd-container__inner bd-page-width"> | 
 |        | 
 |       <div class="bd-sidebar-primary bd-sidebar"> | 
 |          | 
 |  | 
 |    | 
 |   <div class="sidebar-header-items sidebar-primary__section"> | 
 |      | 
 |      | 
 |       <div class="sidebar-header-items__center"> | 
 |          | 
 |           <div class="navbar-item"><nav class="navbar-nav"> | 
 |   <p class="sidebar-header-items__title" | 
 |      role="heading" | 
 |      aria-level="1" | 
 |      aria-label="Site Navigation"> | 
 |     Site Navigation | 
 |   </p> | 
 |   <ul class="bd-navbar-elements navbar-nav"> | 
 |      | 
 |                     <li class="nav-item"> | 
 |                       <a class="nav-link nav-internal" href="../index.html"> | 
 |                         Overview | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |  | 
 |                     <li class="nav-item"> | 
 |                       <a class="nav-link nav-internal" href="../getting_started/index.html"> | 
 |                         Getting Started | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |  | 
 |                     <li class="nav-item"> | 
 |                       <a class="nav-link nav-internal" href="../user_guide/index.html"> | 
 |                         User Guides | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |  | 
 |                     <li class="nav-item"> | 
 |                       <a class="nav-link nav-internal" href="../reference/index.html"> | 
 |                         API Reference | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |  | 
 |                     <li class="nav-item current active"> | 
 |                       <a class="nav-link nav-internal" href="index.html"> | 
 |                         Development | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |  | 
 |                     <li class="nav-item"> | 
 |                       <a class="nav-link nav-internal" href="../migration_guide/index.html"> | 
 |                         Migration Guides | 
 |                       </a> | 
 |                     </li> | 
 |                  | 
 |   </ul> | 
 | </nav></div> | 
 |          | 
 |       </div> | 
 |      | 
 |      | 
 |      | 
 |       <div class="sidebar-header-items__end"> | 
 |          | 
 |           <div class="navbar-item"><!-- | 
 | Licensed to the Apache Software Foundation (ASF) under one or more | 
 | contributor license agreements.  See the NOTICE file distributed with | 
 | this work for additional information regarding copyright ownership. | 
 | The ASF licenses this file to You under the Apache License, Version 2.0 | 
 | (the "License"); you may not use this file except in compliance with | 
 | the License.  You may obtain a copy of the License at | 
 |  | 
 | http://www.apache.org/licenses/LICENSE-2.0 | 
 |  | 
 | Unless required by applicable law or agreed to in writing, software | 
 | distributed under the License is distributed on an "AS IS" BASIS, | 
 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | See the License for the specific language governing permissions and | 
 | limitations under the License. | 
 | --> | 
 |  | 
 | <div id="version-button" class="dropdown"> | 
 |     <button type="button" class="btn btn-secondary btn-sm navbar-btn dropdown-toggle" id="version_switcher_button" data-toggle="dropdown"> | 
 |         4.0.0-preview1 | 
 |         <span class="caret"></span> | 
 |     </button> | 
 |     <div id="version_switcher" class="dropdown-menu list-group-flush py-0" aria-labelledby="version_switcher_button"> | 
 |     <!-- dropdown will be populated by javascript on page load --> | 
 |     </div> | 
 | </div> | 
 |  | 
 | <script type="text/javascript"> | 
 | // Function to construct the target URL from the JSON components | 
 | function buildURL(entry) { | 
 |     var template = "https://spark.apache.org/docs/{version}/api/python/index.html";  // supplied by jinja | 
 |     template = template.replace("{version}", entry.version); | 
 |     return template; | 
 | } | 
 |  | 
 | // Function to check if corresponding page path exists in other version of docs | 
 | // and, if so, go there instead of the homepage of the other docs version | 
 | function checkPageExistsAndRedirect(event) { | 
 |     const currentFilePath = "development/testing.html", | 
 |           otherDocsHomepage = event.target.getAttribute("href"); | 
 |     let tryUrl = `${otherDocsHomepage}${currentFilePath}`; | 
 |     $.ajax({ | 
 |         type: 'HEAD', | 
 |         url: tryUrl, | 
 |         // if the page exists, go there | 
 |         success: function() { | 
 |             location.href = tryUrl; | 
 |         } | 
 |     }).fail(function() { | 
 |         location.href = otherDocsHomepage; | 
 |     }); | 
 |     return false; | 
 | } | 
 |  | 
 | // Function to populate the version switcher | 
 | (function () { | 
 |     // get JSON config | 
 |     $.getJSON("https://spark.apache.org/static/versions.json", function(data, textStatus, jqXHR) { | 
 |         // create the nodes first (before AJAX calls) to ensure the order is | 
 |         // correct (for now, links will go to doc version homepage) | 
 |         $.each(data, function(index, entry) { | 
 |             // if no custom name specified (e.g., "latest"), use version string | 
 |             if (!("name" in entry)) { | 
 |                 entry.name = entry.version; | 
 |             } | 
 |             // construct the appropriate URL, and add it to the dropdown | 
 |             entry.url = buildURL(entry); | 
 |             const node = document.createElement("a"); | 
 |             node.setAttribute("class", "list-group-item list-group-item-action py-1"); | 
 |             node.setAttribute("href", `${entry.url}`); | 
 |             node.textContent = `${entry.name}`; | 
 |             node.onclick = checkPageExistsAndRedirect; | 
 |             $("#version_switcher").append(node); | 
 |         }); | 
 |     }); | 
 | })(); | 
 | </script></div> | 
 |          | 
 |           <div class="navbar-item"> | 
 | <script> | 
 | document.write(` | 
 |   <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> | 
 |     <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span> | 
 |     <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span> | 
 |     <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span> | 
 |   </button> | 
 | `); | 
 | </script></div> | 
 |          | 
 |           <div class="navbar-item"><ul class="navbar-icon-links navbar-nav" | 
 |     aria-label="Icon Links"> | 
 |         <li class="nav-item"> | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |           <a href="https://github.com/apache/spark" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-github"></i></span> | 
 |             <label class="sr-only">GitHub</label></a> | 
 |         </li> | 
 |         <li class="nav-item"> | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |            | 
 |           <a href="https://pypi.org/project/pyspark" title="PyPI" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-solid fa-box"></i></span> | 
 |             <label class="sr-only">PyPI</label></a> | 
 |         </li> | 
 | </ul></div> | 
 |          | 
 |       </div> | 
 |      | 
 |   </div> | 
 |    | 
 |     <div class="sidebar-primary-items__start sidebar-primary__section"> | 
 |         <div class="sidebar-primary-item"><nav class="bd-docs-nav bd-links" | 
 |      aria-label="Section Navigation"> | 
 |   <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> | 
 |   <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> | 
 | <li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to PySpark</a></li> | 
 | <li class="toctree-l1 current active"><a class="current reference internal" href="#">Testing PySpark</a></li> | 
 | <li class="toctree-l1"><a class="reference internal" href="debugging.html">Debugging PySpark</a></li> | 
 | <li class="toctree-l1"><a class="reference internal" href="setting_ide.html">Setting up IDEs</a></li> | 
 | <li class="toctree-l1"><a class="reference internal" href="errors.html">Error classes in PySpark</a></li> | 
 | </ul> | 
 | </div> | 
 | </nav></div> | 
 |     </div> | 
 |    | 
 |    | 
 |   <div class="sidebar-primary-items__end sidebar-primary__section"> | 
 |   </div> | 
 |    | 
 |   <div id="rtd-footer-container"></div> | 
 |  | 
 |  | 
 |       </div> | 
 |        | 
 |       <main id="main-content" class="bd-main"> | 
 |          | 
 |          | 
 |           <div class="bd-content"> | 
 |             <div class="bd-article-container"> | 
 |                | 
 |               <div class="bd-header-article"> | 
 | <div class="header-article-items header-article__inner"> | 
 |    | 
 |     <div class="header-article-items__start"> | 
 |        | 
 |         <div class="header-article-item"> | 
 |  | 
 |  | 
 |  | 
 | <nav aria-label="Breadcrumbs"> | 
 |   <ul class="bd-breadcrumbs" role="navigation" aria-label="Breadcrumb"> | 
 |      | 
 |     <li class="breadcrumb-item breadcrumb-home"> | 
 |       <a href="../index.html" class="nav-link" aria-label="Home"> | 
 |         <i class="fa-solid fa-home"></i> | 
 |       </a> | 
 |     </li> | 
 |      | 
 |     <li class="breadcrumb-item"><a href="index.html" class="nav-link">Development</a></li> | 
 |      | 
 |     <li class="breadcrumb-item active" aria-current="page">Testing PySpark</li> | 
 |   </ul> | 
 | </nav> | 
 | </div> | 
 |        | 
 |     </div> | 
 |    | 
 |    | 
 | </div> | 
 | </div> | 
 |                | 
 |                | 
 |                | 
 |                  | 
 | <div id="searchbox"></div> | 
 |                 <article class="bd-article" role="main"> | 
 |                    | 
 |   <section id="testing-pyspark"> | 
 | <h1>Testing PySpark<a class="headerlink" href="#testing-pyspark" title="Permalink to this headline">#</a></h1> | 
 | <p>In order to run PySpark tests, you should build Spark itself first via Maven or SBT. For example,</p> | 
 | <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>build/mvn<span class="w"> </span>-DskipTests<span class="w"> </span>clean<span class="w"> </span>package | 
 | </pre></div> | 
 | </div> | 
 | <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>build/sbt<span class="w"> </span>-Phive<span class="w"> </span>clean<span class="w"> </span>package | 
 | </pre></div> | 
 | </div> | 
 | <p>After that, the PySpark test cases can be run via using <code class="docutils literal notranslate"><span class="pre">python/run-tests</span></code>. For example,</p> | 
 | <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python/run-tests<span class="w"> </span>--python-executable<span class="o">=</span>python3 | 
 | </pre></div> | 
 | </div> | 
 | <p>Note that you may set <code class="docutils literal notranslate"><span class="pre">OBJC_DISABLE_INITIALIZE_FORK_SAFETY</span></code> environment variable to <code class="docutils literal notranslate"><span class="pre">YES</span></code> if you are running tests on Mac OS.</p> | 
 | <p>Please see the guidance on how to <a class="reference external" href="https://spark.apache.org/docs/4.0.0-preview1/building-spark.html">Building Spark</a>, | 
 | <a class="reference external" href="https://spark.apache.org/developer-tools.html">run tests for a module, or individual tests</a>.</p> | 
 | <section id="running-individual-pyspark-tests"> | 
 | <h2>Running Individual PySpark Tests<a class="headerlink" href="#running-individual-pyspark-tests" title="Permalink to this headline">#</a></h2> | 
 | <p>You can run a specific test via using <code class="docutils literal notranslate"><span class="pre">python/run-tests</span></code>, for example, as below:</p> | 
 | <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python/run-tests<span class="w"> </span>--testnames<span class="w"> </span>pyspark.sql.tests.test_arrow | 
 | </pre></div> | 
 | </div> | 
 | <p>Please refer to <a class="reference external" href="https://spark.apache.org/developer-tools.html">Testing PySpark</a> for more details.</p> | 
 | </section> | 
 | <section id="running-tests-using-github-actions"> | 
 | <h2>Running Tests using GitHub Actions<a class="headerlink" href="#running-tests-using-github-actions" title="Permalink to this headline">#</a></h2> | 
 | <p>You can run the full PySpark tests by using GitHub Actions in your own forked GitHub | 
 | repository with a few clicks. Please refer to | 
 | <a class="reference external" href="https://spark.apache.org/developer-tools.html">Running tests in your forked repository using GitHub Actions</a> for more details.</p> | 
 | </section> | 
 | <section id="running-tests-for-spark-connect"> | 
 | <h2>Running Tests for Spark Connect<a class="headerlink" href="#running-tests-for-spark-connect" title="Permalink to this headline">#</a></h2> | 
 | <section id="running-tests-for-python-client"> | 
 | <h3>Running Tests for Python Client<a class="headerlink" href="#running-tests-for-python-client" title="Permalink to this headline">#</a></h3> | 
 | <p>In order to test the changes in Protobuf definitions, for example, at | 
 | <a class="reference external" href="https://github.com/apache/spark/tree/master/connector/connect/common/src/main/protobuf/spark/connect">spark/connector/connect/common/src/main/protobuf/spark/connect</a>, | 
 | you should regenerate Python Protobuf client first by running <code class="docutils literal notranslate"><span class="pre">dev/connect-gen-protos.sh</span></code>.</p> | 
 | </section> | 
 | <section id="running-pyspark-shell-with-python-client"> | 
 | <h3>Running PySpark Shell with Python Client<a class="headerlink" href="#running-pyspark-shell-with-python-client" title="Permalink to this headline">#</a></h3> | 
 | <p>For Apache Spark you locally built:</p> | 
 | <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>bin/pyspark<span class="w"> </span>--remote<span class="w"> </span><span class="s2">"local[*]"</span> | 
 | </pre></div> | 
 | </div> | 
 | <p>For the Apache Spark release:</p> | 
 | <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>bin/pyspark<span class="w"> </span>--remote<span class="w"> </span><span class="s2">"local[*]"</span><span class="w"> </span>--packages<span class="w"> </span>org.apache.spark:spark-connect_2.13:<span class="nv">$SPARK_VERSION</span> | 
 | </pre></div> | 
 | </div> | 
 | </section> | 
 | </section> | 
 | </section> | 
 |  | 
 |  | 
 |                 </article> | 
 |                | 
 |                | 
 |                | 
 |                 <footer class="bd-footer-article"> | 
 |                    | 
 | <div class="footer-article-items footer-article__inner"> | 
 |    | 
 |     <div class="footer-article-item"><!-- Previous / next buttons --> | 
 | <div class="prev-next-area"> | 
 |     <a class="left-prev" | 
 |        href="contributing.html" | 
 |        title="previous page"> | 
 |       <i class="fa-solid fa-angle-left"></i> | 
 |       <div class="prev-next-info"> | 
 |         <p class="prev-next-subtitle">previous</p> | 
 |         <p class="prev-next-title">Contributing to PySpark</p> | 
 |       </div> | 
 |     </a> | 
 |     <a class="right-next" | 
 |        href="debugging.html" | 
 |        title="next page"> | 
 |       <div class="prev-next-info"> | 
 |         <p class="prev-next-subtitle">next</p> | 
 |         <p class="prev-next-title">Debugging PySpark</p> | 
 |       </div> | 
 |       <i class="fa-solid fa-angle-right"></i> | 
 |     </a> | 
 | </div></div> | 
 |    | 
 | </div> | 
 |  | 
 |                 </footer> | 
 |                | 
 |             </div> | 
 |              | 
 |              | 
 |                | 
 |                 <div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> | 
 |  | 
 |   <div class="sidebar-secondary-item"> | 
 |   <div class="page-toc tocsection onthispage"> | 
 |     <i class="fa-solid fa-list"></i> On this page | 
 |   </div> | 
 |   <nav class="bd-toc-nav page-toc"> | 
 |     <ul class="visible nav section-nav flex-column"> | 
 | <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#running-individual-pyspark-tests">Running Individual PySpark Tests</a></li> | 
 | <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#running-tests-using-github-actions">Running Tests using GitHub Actions</a></li> | 
 | <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#running-tests-for-spark-connect">Running Tests for Spark Connect</a><ul class="nav section-nav flex-column"> | 
 | <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#running-tests-for-python-client">Running Tests for Python Client</a></li> | 
 | <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#running-pyspark-shell-with-python-client">Running PySpark Shell with Python Client</a></li> | 
 | </ul> | 
 | </li> | 
 | </ul> | 
 |   </nav></div> | 
 |  | 
 |   <div class="sidebar-secondary-item"> | 
 |   <div class="tocsection sourcelink"> | 
 |     <a href="../_sources/development/testing.rst.txt"> | 
 |       <i class="fa-solid fa-file-lines"></i> Show Source | 
 |     </a> | 
 |   </div> | 
 | </div> | 
 |  | 
 | </div></div> | 
 |                | 
 |              | 
 |           </div> | 
 |           <footer class="bd-footer-content"> | 
 |              | 
 |           </footer> | 
 |          | 
 |       </main> | 
 |     </div> | 
 |   </div> | 
 |    | 
 |   <!-- Scripts loaded after <body> so the DOM is not blocked --> | 
 |   <script src="../_static/scripts/bootstrap.js?digest=e353d410970836974a52"></script> | 
 | <script src="../_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52"></script> | 
 |  | 
 |   <footer class="bd-footer"> | 
 | <div class="bd-footer__inner bd-page-width"> | 
 |    | 
 |     <div class="footer-items__start"> | 
 |        | 
 |         <div class="footer-item"><p class="copyright"> | 
 |     Copyright @ 2024 The Apache Software Foundation, Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>. | 
 | </p></div> | 
 |        | 
 |         <div class="footer-item"> | 
 |   <p class="sphinx-version"> | 
 |     Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.5.0. | 
 |     <br/> | 
 |   </p> | 
 | </div> | 
 |        | 
 |     </div> | 
 |    | 
 |    | 
 |     <div class="footer-items__end"> | 
 |        | 
 |         <div class="footer-item"><p class="theme-version"> | 
 |   Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.13.3. | 
 | </p></div> | 
 |        | 
 |     </div> | 
 |    | 
 | </div> | 
 |  | 
 |   </footer> | 
 |   </body> | 
 | </html> |