-
Notifications
You must be signed in to change notification settings - Fork 242
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
EDU-3510: Python: Added paragraph that warns about pytest.fixture(scope="session") with test server #3113
base: main
Are you sure you want to change the base?
Conversation
Created SDK-2941 to review |
|
||
|
||
# This might break because it will reuse the workflow environment | ||
pytest.fixture(scope="session") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pytest.fixture(scope="session") | |
@pytest.fixture(scope="session") |
If you do keep this, need @
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for catching this!
Co-authored-by: Chad Retz <chad.retz@gmail.com>
Co-authored-by: Chad Retz <chad.retz@gmail.com>
# environment will be created for each test. | ||
@pytest.fixture | ||
def workflow_environment(): | ||
return WorkflowEnvironment.start_time_skipping() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure this works without @pytest_asyncio.fixture
and async
and await
. Have you tested this code? And for many, they may prefer a "session" scoped start_local
instead of time skipping even though this only demonstrates time skipping.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a good point, was using the auto-mode in my tests https://pytest-asyncio.readthedocs.io/en/latest/reference/configuration.html but I agree that being explicit works better
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be addressed on @cretz
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It appears the workflow_environment()
function is now duplicated in this snippet
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is to show the good and bad example, do you think one of the two fixtures should be named differently ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I think it's a bit confusing to even have a bad example unless it's labeled more clearly and in a separate snippet. Many of our users just grab the first snippet and move on.
So in this case, we do want start_local
to be used by users and used across tests, but if they need start_time_skipping
you are correct that it should be per test. So maybe we should have both forms, named differently, with comments above each on why start-local is session scoped and start-time-skipping is not.
Co-authored-by: Chad Retz <chad.retz@gmail.com>
@edmondop Thanks for all your work on this. Please ping me and let me know when it is ready to move forward. Cheers! |
@fairlydurable - sorry I missed your comment until now. I think https://github.com/temporalio/documentation/pull/3113/files#r1866332621 still needs to be addressed |
What does this PR do?
Addresses #3111 . When running tests in a project I noticed:
This additional paragraph should warn developers familiar with pytest.fixtures not to use the scope session for caching the workflow environment