I have a unit test that is passing when I run it via python manage.py test, but failing when I run it from within PyCharm.
def test_alpha(self):
    from selenium.webdriver.common.utils import free_port
    from selenium import webdriver
    driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=free_port())
    driver.quit()
The exception I get when running from PyCharm is
WebDriverException: Message: 'Can not connect to GhostDriver' 
I've spent a fair amount of time digging into this problem, and I've noticed that when I specify a port manually the test passes within PyCharm.
# suppose 50000 happens to be a free port on your computer
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=50000)
To quickly recap:
- Test passes with python manage.py test
- Test passes in PyCharm if port is specified manually
- Test fails in PyCharm if port=free_port()
What is PyCharm doing that is making the test unable to connect to Ghostdriver?
# For convenience, the `free_port()` code snippet is here
# selenium.webdriver.common.utils.freeport
def free_port():
    free_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    free_socket.bind(('127.0.0.1', 0))
    free_socket.listen(5)
    port = free_socket.getsockname()[1]
    free_socket.close()
    return port 
 
     
     
    