我正在尝试为我的Web应用程序编写自动化测试,但遇到一个奇怪的问题;
尝试呼叫driver.get('https://my-local-app-url:port')
时,Chrome只是挂起,而从未真正打开URL。但是,在Google.com上使用driver.get()
时,效果很好。
这是我设置所有内容的方式:
“测试”:
class TestApp:
def test_app(self, chrome_browser, app):
chrome_browser.get('https://google.com') << this line execute just fine
app.run(host='127.0.0.1', port=8000)
chrome_browser.get('http://127.0.0.1:8000/') << this one does not execute
conftest.py:
@pytest.fixture(scope="session")
def chrome_browser():
browser = webdriver.Chrome()
return browser
@pytest.fixture(scope="session")
def app():
app = create_app()
return app
create_app函数:
def create_app():
app = Flask(__name__)
app.register_blueprint(blueprint)
return app
*在测试之外,函数create_app正常工作并返回Flask对象。 *我的Chrome驱动程序和chrome版本为86.04240.22。
答案 0 :(得分:1)
我想,app.run()
调用正在阻塞,并且仅在flask服务器停止后才执行该行之后的所有代码。您可以使用app.run(debug=True, use_reloader=False)
在具有某些限制的单独线程中启动flask,但是更合乎逻辑的方法是在单独的类中实现硒集成测试,并将其作为单独的进程启动。