I have a following solution structure:
main
main/src/myApi.py
main/unittests/myApiTests.py
in myApiTests.py
I try to import the class Database
from myApi.py
but i get the following error every time I try:
Traceback (most recent call last): File "S:...\main\UnitTests\myApiTests.py", line 3, in from myApi import Database ModuleNotFoundError: No module named 'myApi'
import sys
sys.path.append("../src")
from myApi import Database
import unittest
class BotApiTests(unittest.TestCase):
def test_GetUserBalance_WhenUserDoesNotExist_ThenReturn0(self):
testDatabase = Database('testDb.db')
userName = "testUserName"
result = testDatabase.GetUserBalance(userName)
self.assertEqual(result, 0)
unittest.main()
I've also tried
sys.path.append("..src")
or
sys.path.append("..")
or
from myApi import Database
but nothing works :-(
Edit: I have an empty __init__.py
in every folder
Edit2: Full Code:
main/src/myApi.py:
import re
import string
import urllib.request
import sqlite3
import praw
class Database:
def __init__(self, name='cryptotipbot.db'):
print("in __init__ -> ", (name))
self.connection = sqlite3.connect(name, check_same_thread=False)
self.database = self.connection.cursor()
self.CreateDatabase()
self.addressIndex = len(self.database.execute("SELECT * FROM usedAdresses").fetchall())
def CreateDatabase(self):
print("in CreateDatabase")
self.database.execute("CREATE TABLE IF NOT EXISTS Users (redditUsername TEXT PRIMARY KEY, balance INTEGER)")
self.connection.commit()
self.database.execute("CREATE TABLE IF NOT EXISTS CommentsRepliedTo (commentId TEXT PRIMARY KEY)")
self.connection.commit()
self.database.execute("CREATE TABLE IF NOT EXISTS UsedAdresses (adressIndex INTEGER PRIMARY KEY, adress TEXT)")
self.connection.commit()
self.database.execute("CREATE TABLE IF NOT EXISTS DepositRequests (messageId TEXT PRIMARY KEY, adress TEXT, amount INTEGER)")
self.connection.commit()
def CreateUser(self, redditUsername):
user = self.database.execute("SELECT * FROM Users WHERE redditUsername = ?", (redditUsername,)).fetchone()
if not user:
self.database.execute("INSERT INTO Users (redditUsername, balance) VALUES (?, ?)", (redditUsername, 0))
self.connection.commit()
def GetUserBalance(self, redditUsername):
entry = self.database.execute("SELECT * FROM Users WHERE redditUsername = ?",(redditUsername,)).fetchone()
if entry:
balance = entry[1]
return balance
else:
self.CreateUser(redditUsername)
return self.GetUserBalance(redditUsername)
main/UnitTests/myApiTests.py
import unittest
from ..src import myApi
class BotApiTests(unittest.TestCase):
def test_GetUserBalance_WhenUserDoesNotExist_ThenReturn0(self):
testDatabase = Database('testDb.db')
userName = "testUserName"
result = testDatabase.GetUserBalance(userName)
self.assertEqual(result, 0)
unittest.main()