Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Getting 'Not Found' across all routes #190

Open
HombreLaser opened this issue Mar 29, 2024 · 1 comment
Open

Getting 'Not Found' across all routes #190

HombreLaser opened this issue Mar 29, 2024 · 1 comment
Labels

Comments

@HombreLaser
Copy link

Describe the bug
Hello, I'm trying to run pytest-flask's live server in conjunction with selenium, but every one of my registered routes return a 404 status.
Both my app fixture and the live_server's app are the same (app == live_server.appreturns True, but I haven't checked out if they're the exact same object), and both app objects return the expected routes when calling app.url_map

It not only happens in testing: running the suite via a debugger and stopping the execution just before it fails, and visiting the app's routes in another tab or browser results in the same 404 status responses.

To Reproduce
I have the project open and available in github here, in the tests/login_example branch. Just start a virtual environment, install the requirements and run the following test:

pytest src/tests/system/guest/test_login.py

Expected behavior
The test passes.

Screenshots
Checking url_map in the debugger:
Screenshot from 2024-03-29 12-02-06

Firefox showing the error:

Screenshot from 2024-03-29 12-02-26

Environment (please complete the following information):

  • OS: ArchLinux with the Linux 6.8.2 kernel
  • Python Version: 3.11.8
  • pytest-flask version: 1.3.0

Additional context
The test proper:

@pytest.mark.usefixtures('live_server')
class TestLogin(TestSystemBase):
    def test_correct_login(db, driver, live_server):
        driver.get(f"http://localhost:8888{url_for('sessions_controller.new')}")
        assert 'Login' in driver.page_source

My app fixture:

@pytest.fixture(scope='session')
def app():
    app = Flask(__name__)
    app.config['TESTING'] = True
    initializer.init_app(app)
    app.config['SECRET_KEY'] = secrets.token_hex(32)

    with app.app_context():
        yield app

    clear_data(app)

My selenium driver fixture:

@pytest.fixture
def driver():
    options = webdriver.FirefoxOptions()
    #options.add_argument('-headless')
    driver = webdriver.Firefox(options=options)

    yield driver

    driver.close()
@dgm1g15
Copy link

dgm1g15 commented Apr 25, 2024

I had the same issue, this thread solved it: #175

Simply ensure you define SERVER_NAME as 'localhost' in your test app config.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants