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

python
pytest
Теги: #<Tag:0x00007fedbc53d138> #<Tag:0x00007fedbc53cff8>

(Пётр Алексеев) #1

В библиотеке 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()),, но не приятно и хочется понять почему так происходит?(


(rmerkushin) #2

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

path.dirname(path.abspath(__file__)

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


(Пётр Алексеев) #3

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


(rmerkushin) #4

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


(Пётр Алексеев) #5

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