Посмотрите документы py.path.as_cwd
:
возвращает менеджер контекста, который изменяется на текущий каталог во время управляемого контекста «с». На __enter__
возвращается старый каталог.
Таким образом, наблюдаемое вами поведение является правильным:
def test_something(tmpdir):
print('current directory where you are before changing it:', os.getcwd())
# the current directory will be changed now
with tmpdir.as_cwd() as old_dir:
print('old directory where you were before:', old_dir)
print('current directory where you are now:', os.getcwd())
print('you now returned to the old current dir', os.getcwd())
Просто помните, что p
в вашем примере - это не "новый" текущий каталог, на который вы меняете, а "старый", с которого вы изменили.