C'est juste un bulletin.
La chose la plus importante est de savoir si vous pouvez faire "depuis ... importer ...". Le répertoire du module personnalisé et Lorsque les deux hiérarchies de répertoires du module de test sont profondes.
Il semble que le comportement change en 3 couches ou plus.
L'exemple de code lorsque la hiérarchie est profonde comme la structure suivante, Je ne pouvais pas le trouver même si je le recherchais sur Google, alors je l'ai écrit sous forme d'article.
.
├tests
│├mod
││└test_module.py
├src
│├mod
││└module.py
J'ai vu beaucoup de choses comme les suivantes.
.
├tests
│└test_module.py
├src
│└module.py
Ce que je veux faire c'est Comment exécuter unittest avec pytest pour séparer le code de module et le code de test dans les répertoires? Cependant, cette méthode nécessite la spécification des options d'exécution du module.
Dans launch.json
, vous devez décrire la configuration de débogage de tous les modèles pour le nombre de modules.
Il semble qu'il n'y ait pas de problème s'il s'agit d'un petit projet comme un tutoriel,
Plus le projet est gros, plus il est absurde.
Le contenu du fichier __init __. Py
est vide.
De plus, «__init __. Py» n'est pas nécessaire.
Encore une fois, cela fonctionne bien sans __init __. Py
, et l'intelligence fonctionne.
C'est le test réel.
test_name.py
import pytest
from src.animal.mammal import human
from src.star import satellite
def test_human_name():
target=human("Jane Doe")
ans=target.name
assert ans=="Jane Doe"
def test_satellite_name():
target=satellite("lua")
ans=target.name
assert ans=="lua"
def test_human_foot_count():
ans=human.howmanyfoot()
assert ans==2
if __name__ == "__main__":
pass
star.py
class satellite():
def __init__(self, name:str):
self.name=name
def name(self) -> str:
return self.name
class planet():
def __init__(self, name:str):
self.name=name
def name(self) -> str:
return self.name
mammal.py
class human():
def __init__(self, name:str):
self.name=name
@classmethod
def name(self) -> str:
return self.name
@staticmethod
def howmanyfoot() -> int:
return 2
Il s'agit d'une solution de contournement d'erreur lors du traitement de «depuis l'importation» du «fichier Currrent lors du débogage». En mettant cela, il semble qu'il reconnaîtra "Python path" et "self-made modules of other layers".
.env
PYTHONPATH=./
Il reconnaît même si vous utilisez un environnement virtuel tel que conda.
Si vous exécutez le script suivant, Vous pouvez voir si l'environnement est reconnu.
import_test.py
import sys
print(sys.path)
Suite à l'exécution de ʻimport_test.pyci-dessus, C'est OK si
. / Src /` est inclus.
Il définit trois types de méthodes de débogage. Du haut jusqu'en bas
À mon avis, le débogage du module est Il est limité aux applications telles que la spécification du module principal.
Dans la plupart des cas, appuyez sur la touche F5
de l'onglet en cours d'édition pour déboguer le fichier actuel → lancer le test.
launch.json
{
//Vous pouvez utiliser IntelliSense pour apprendre les attributs disponibles.
//Survolez et affichez la description des attributs existants.
//Vérifiez les éléments suivants pour plus d'informations: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python:Test de module_name",
"type": "python",
"request": "launch",
"cwd": "${workspaceFolder}",
"module": "tests.test_mod.test_name"
},{
"name": "Python:Module mammifère",
"type": "python",
"request": "launch",
"cwd": "${workspaceFolder}",
"module": "src.animal.mammal"
},
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}
settings.json
{
"python.testing.pytestArgs": [
"tests"
],
"python.testing.unittestEnabled": false,
"python.testing.nosetestsEnabled": false,
"python.testing.pytestEnabled": true,
"python.envFile": "${workspaceFolder}/.env"
}
Si vous regardez attentivement, vous pouvez voir que l'emplacement de .env
est spécifié par défaut.
Conda
est utilisé jusqu'à" Isolation de l'environnement virtuel "et" Installation de Python dans un environnement virtuel ".
L'installation de la bibliothèque dans l'environnement virtuel utilise pip
.Excelsior!
Recommended Posts