1

I have a project structure something like this. I want to write a test which programmatically change version variable in myPackage/version.py and write a test in tests/unit/test_release.py.

├── myPackage
│   ├── __init__.py
│   ├── root.py
│   └── version.py
└── tests
    └── unit
        └── test_release.py

cat myPackage/init.py

from .version import __version__

cat myPackage/root.py

from .version import __version__
def printFunc():
  return __version__

if __name__ == "__main__":
  print(printFunc())

cat myPackage/version.py

__version__ = '5.7.11'

cat tests/unit/test_release.py

import sys
sys.path.insert(0, "/Users/username/myfolder")

from myPackage import root, version
import unittest

class TestHelp(unittest.TestCase):
    def setUp(self):
        pass

    def test_version(self):
      version.__version__ = '7.8.19'
      new_version = root.printFunc()
      assert new_version == '7.8.19'

What is the best way to do that?

urawesome
  • 198
  • 1
  • 10

1 Answers1

0

I tried this for now.

from importlib import reload

class TestHelp(unittest.TestCase):
    def setUp(self):
        pass

    def test_version(self):
      myPackage.version.__version__ = '7.8.19'
      myPackage.root = reload(myPackage.root)
      new_version = myPackage.root.printFunc()
      assert new_version == '7.8.19'
urawesome
  • 198
  • 1
  • 10