日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

py导入包异常跳出_Python运行Unittest作为包导入错误

發(fā)布時(shí)間:2025/3/15 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 py导入包异常跳出_Python运行Unittest作为包导入错误 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

I.前言:應(yīng)用程序的目錄結(jié)構(gòu)和模塊在文章末尾列出.

二.問(wèn)題陳述:如果未設(shè)置PYTHONPATH,則應(yīng)用程序運(yùn)行,但是單元測(cè)試失敗,并出現(xiàn)ImportError:沒(méi)有名為models.transactions的模塊.嘗試導(dǎo)入時(shí)會(huì)發(fā)生這種情況

app.py中的交易.如果PYTHONPATH設(shè)置為/ sandbox / app,則應(yīng)用程序和

unittest運(yùn)行沒(méi)有錯(cuò)誤.解決方案的約束條件是不必設(shè)置PYTHONPATH,并且

sys.path不必通過(guò)編程方式進(jìn)行修改.

三,詳細(xì)信息:考慮以下情況:設(shè)置PYTHONPATH并將test_app.py作為軟件包/ sandbox $python -m unittest tests.test_app運(yùn)行.查看__main__的打印語(yǔ)句

遍及整個(gè)代碼:

models : app.models.transactions

models : models.transactions

resources: app.resources.transactions

app : app.app

test : tests.test_app

單元測(cè)試首先導(dǎo)入應(yīng)用程序,因此有app.models.transactions.下次導(dǎo)入該應(yīng)用程序

嘗試是resources.transactions.導(dǎo)入時(shí),它會(huì)自己導(dǎo)入model.transactions和

然后我們看到__name__代表app.resources.transactions.其次是app.app

導(dǎo)入,最后是unittest模塊tests.test.app.設(shè)置PYTHONPATH允許應(yīng)用程序解析模型.

一種解決方案是將model.transactions放入resources.transaction內(nèi).但是還有另一種方法可以解決這個(gè)問(wèn)題嗎?

為了完整起見(jiàn),在運(yùn)行應(yīng)用程序時(shí),__ main__的打印語(yǔ)句為:

models : models.transactions

resources: resources.transactions

app : __main__

這是預(yù)期的,并且不會(huì)嘗試導(dǎo)入高于/ sandbox / app或橫向的導(dǎo)入.

IV.附錄

A.1目錄結(jié)構(gòu):

|-- sandbox

|-- app

|-- models

|-- __init__.py

|-- transactions.py

|-- resources

|-- __init__.py

|-- transactions.py

|-- __init__.py

|-- app.py

|-- tests

|-- __init__.py

|-- test_app.py

A.2模塊:

(1)應(yīng)用程式:

from flask import Flask

from models.transactions import TransactionsModel

from resources.transactions import Transactions

print ' app : ', __name__

def create_app():

app = Flask(__name__)

return app

app = create_app()

if __name__ == '__main__':

app.run(host='127.0.0.1', port=5000, debug=True)

(2)模型.交易

print ' model : ', __name__

class TransactionsModel:

pass

(3)resources.transactions:

from models.transactions import TransactionsModel

print ' resources: ', __name__

class Transactions:

pass

(4)tests.test_app

import unittest

from app.app import create_app

from app.resources.transactions import Transactions

print ' test : ', __name__

class DonationTestCase(unittest.TestCase):

def setUp(self):

pass

def tearDown(self):

pass

def test_transactions_get_with_none_ids(self):

self.assertEqual(0, 0)

if __name__ == '__main__':

unittest.main()

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的py导入包异常跳出_Python运行Unittest作为包导入错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。