Ini adalah struktur proyek saya

   |
   |---------src
   |          |
   |          |---------main.py
   |          |
   |
   |--------test
   |          |
   |          |---------__init__.py
   |          |
              |
              |---------test_main.py

Ini adalah kelas utama saya yang sederhana

main.py

def cli(cmd_arguments):
    ...

    
if __name__ == "__main__":
   ...
   cli(args)
    

Dan ini adalah metode pengujiannya

   test_main.py
            
   import unittest
   from argparse import Namespace
   import sys
            
   from project.src.main import cli
   sys.path.append('../src')
    
    class TestMainMethod(unittest.TestCase):
    
        def test_path_exception(self):
            with self.assertRaises(Exception):
                args = Namespace(method="abc", path='abcd')
                cli(args)

Dan saya mencoba menjalankan perintah ini python -m unittest dari direktori project tetapi mendapatkan pengecualian ModuleNotFoundError: No module named 'project.src'

0
user1298426 10 Mei 2021, 21:27

1 menjawab

Jawaban Terbaik

project bukan paket. itu adalah root proyek Anda.

  1. tambahkan __init__.py ke folder src Anda (jika Anda belum memilikinya).
  2. gunakan from src.main import cli.
  3. Umumnya, Anda harus menghindari penggunaan sys.path.append('../src'). Saya tidak yakin mengapa Anda membutuhkannya.
0
Lior Cohen 10 Mei 2021, 18:33