当我使用文件conftest.py使用fixture时,我通过os.getcwd()获得的目录不正确!我得到C:\ Program Files \ Java \ jdk1.8.0_60 \ jre \ bin 如果我从命令行运行测试,一切正常 例如:
conftest.py
import os
import pytest
@pytest.fixture()
def curdir():
directory = os.getcwd()
print directory
return directory
PyCharm
我得到C:\ Program Files \ Java \ jdk1.8.0_60 \ jre \ bin
CMD
我得到C:\ python \ testing \ scripts \ example
test_simple.py
# coding=utf-8
import json
import os
def test_simple(curdir):
print curdir
为什么会这样?
答案 0 :(得分:0)
我从来没有在Windows上运行PyCharm而且我根本不了解Windows,但我的猜测是:PyCharm(Java应用程序)将JRE的二进制目录设置为运行时的当前目录,以及任何PyCharm产生的进程(例如Python解释器)只是继承了这个。
所以我不一定认为你所看到的一切都很奇怪。
如果您需要将当前目录设为特定目录,则可能最好使用os.chdir()
强制它。
答案 1 :(得分:0)
我找到了解决方案。相反
os.getcwd()
使用
os.path.dirname(os.path.abspath(__file__))