我是pytest测试和尝试测试python模块main.py的新手,该模块包含类和函数,并且还读取静态config.json文件。当我为pytest导入主模块并运行测试时,出现一个错误,即找不到json文件。我希望再次对我在main.py中定义的类进行一次简单的测试,并且不需要config.json数据。
我尝试将pytest放在项目目录的不同部分,但这无济于事。我还尝试从程序中创建一个程序包,包括对MANIFEST.in文件中config.json文件的引用,并且我的config.json文件已与程序包一起安装,但是仍然遇到与配置文件相同的问题找不到。
我的目录
Project
src
code
main.py
config.json
tests
test_main.py
我的pytest test_main.py:
import sys, os
myPath = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, myPath + '/../')
import pytest
from main import Reservation
@pytest.mark.runme
def test_reservation():
starttime = "2019-05-03 12:30"
booktime = "2019-05-02 8:00"
newreservation = Reservation("002", "manicure", "normal", starttime, booktime, 1, 30)
assert newreservation.get_serv_name() == "manicure"
来自main.py,位于第436行:
with open('config.json', 'rt') as fin:
config = json.load(fin)
business_name = config['business_name']
我希望能够从main.py导入Reservation类并对其进行测试,但是出现错误,找不到config.json文件:
pytest错误:
==================================== ERRORS ====================================
___________ ERROR collecting src/MiYE/tests/test_u01_load_clients.py ___________
test_main.py:6: in <module>
from main import Reservation
../main.py:436: in <module>
with open('config.json', 'rt') as fin:
E FileNotFoundError: [Errno 2] No such file or directory: 'config.json'
=============================== warnings summary ===============================
顺便说一句,当我将main.py作为常规python文件(而不是导入的模块)运行时,可以成功访问config.json文件。此外,将测试从/ test移到代码目录时,问题仍然存在。
答案 0 :(得分:0)
假设您有一个示例数据json,如下所示:
{ "url" : "http://www.example.com",
"username": "user1"
}
您可以使用以下代码从json文件提取数据:
with open('path /example.json') as json_file:
data = json.load(json_file)
username = data['username']