Closed iDevelopper closed 9 years ago
Je ne peux pas utiliser ce test case car il n'est pas au format JSON :-(
Peux-tu plutôt le poster en JSON ?
Ensuite il faudra le copier-coller dans l'outil de trace (http://www.openfisca.fr/outils/trace) et investiguer pour trouver les formules fausses.
En attendant on pourra aussi créer un test YAML (voir par ex. les tests mes-aides)
La page http://www.openfisca.fr/outils/trace est introuvable
testcase au format JSON
https://www.dropbox.com/s/x3ua2ttiqxupz9w/testcase.json?dl=0
J'ai rétabli l'outil trace, j'avais ajouté une redirection Apache trop tôt. Comme c'est une redirection permanente peut-être qu'il faudra insister un peu pour charger la page pour passer au travers du cache du navigateur.
J'ai reformaté le test case JSON avec http://jsoneditoronline.org/ puis changé l'expression de la période en string (l'outil trace ne supporte pas encore les périodes en dictionnaire).
{
"scenarios": [
{
"period": "2014",
"test_case": {
"individus": [
{
"id": "Parent 1",
"salaire_de_base": 50000
}
],
"familles": [
{
"id": "Famille",
"parents": [
"Parent 1"
],
"enfants": []
}
],
"menages": [
{
"id": "Logement",
"enfants": [],
"personne_de_reference": "Parent 1"
}
],
"foyers_fiscaux": [
{
"id": "Déclaration d'impôt",
"declarants": [
"Parent 1"
],
"personnes_a_charge": []
}
]
}
}
],
"variables": ["revdisp"]
}
J'en ai fait le test YAML suivant:
- name: "psoc - Célibataire ayant un salaire de base de 50000€ annuel"
period: 2014
individus:
- id: ind0
salaire_de_base: 50000
output_variables:
psoc: 0
Qu'on peut exécuter comme ça depuis openfisca_france
:
cbenz@lambert ~/D/o/openfisca-france (master)> python openfisca_france/tests/test_yaml.py openfisca_france/tests/formulas/psoc.yaml
===================================================================================================================================================================
Test 1: /home/cbenz/Dev/openfisca/openfisca-france/openfisca_france/tests/formulas/psoc.yaml psoc - Célibataire ayant un salaire de base de 50000€ annuel - 2014
===================================================================================================================================================================
Traceback (most recent call last):
File "openfisca_france/tests/test_yaml.py", line 345, in <module>
function(yaml_path, name, period_str, test, force)
File "openfisca_france/tests/test_yaml.py", line 190, in check
relative_error_margin = test.get('relative_error_margin'),
File "/home/cbenz/Dev/openfisca/openfisca-core/openfisca_core/tools.py", line 56, in assert_near
abs(target_value - value), absolute_error_margin)
AssertionError: psoc@2014: [ 726.11260986] differs from [ 0.] with an absolute margin [ 726.11260986] > 0.005
On constate bien que psoc
vaut 726.113€
, et ça devrait être 0
.
@benjello Une idée ?
Sans tester: les prestations sociales peuvent dépendre des revenus en n-2. Il faut donc mettre des salaires sur trois ans.
Ceci fonctionne :
- name: "psoc - Célibataire ayant un salaire de base de 50000€ annuel"
period: 2014
individus:
- id: ind0
salaire_de_base:
2013: 50000
2014: 50000
output_variables:
psoc: 0
En JSON cela donne :
{
"scenarios": [
{
"period": "2014",
"test_case": {
"individus": [
{
"id": "Parent 1",
"salaire_de_base": {
"2013": 50000,
"2014": 50000
}
}
],
"familles": [
{
"id": "Famille",
"parents": [
"Parent 1"
],
"enfants": []
}
],
"menages": [
{
"id": "Logement",
"enfants": [],
"personne_de_reference": "Parent 1"
}
],
"foyers_fiscaux": [
{
"id": "Déclaration d'impôt",
"declarants": [
"Parent 1"
],
"personnes_a_charge": []
}
]
}
}
],
"variables": ["psoc"]
}
Pour info : openfisca/openfisca-trace-tool#1
test YAML ajouté openfisca/openfisca-france@c751d80fb864a877c361a0413b98f2bfc8bf00d5
Bonjour,
https://www.dropbox.com/s/q7vbmofqazw7vvf/simulation.txt?dl=0
Sur api-test :
Ce test case me renvoie des prestations sociales pour un montant de 726 euros (salaire de base = 50000 euros, célibataire).