PyCharm не корректно работает в pytest с файлом conftest.py

В библиотеке py.test есть конфигурационный фаил conftest.py. Когда я в нем запрашиваю текущую директорию через os.getcwd(), то мне возвращается директория C:\Program Files\Java\jdk1.8.0_60\jre\bin . Если запустить тест через cmd, то директория будет верной

Пример.
Простой тест и файл конфигурации для фикстур

conftest.py

import os
import pytest

@pytest.fixture()
def curdir():
    directory = os.getcwd()
    print directory
    return directory

Тест

# coding=utf-8
import json
import os

def test_simple(curdir):
    print curdir

Это конечно не сильно мешает работе(из-за этой проблемы я вынужден вначале менять директорию через os.chdir()), но не приятно и хочется понять почему так происходит?(

Потому что питоновские скрипты запускаются в пайчарм через т.н. обёртку. Попробуйте путь до скрипта брать так:

path.dirname(path.abspath(__file__)

Пишу с мобильника по этому текст кода скорее всего коряво отображается. Там file начинается и заканчивается двумя нижними подчеркиваниями

1 лайк

Но тогда почему если я создам в PyCharm простой питоновский скрипт в котором пропишу os.getcwd(), то он вернет мне нормальную директорию?
Проблема именно в файле conftest.py, который относится к библиотеке PyTest

Как я и писал выше, тесты могут выполняться не напрямую через python, а через какой нибудь враппер, чтобы идея как то понимала контекст. Но это так, догадки. Просто юзайте то что я выше писал и будет вам счастье :slight_smile:
З.Ы.: os.getcwd() так же не работает если вы юзаете какой нибудь py2exe или еже с ними, по той же причине.

1 лайк

Большое спасибо. Буду юзать ваш пример