J'ai fait un petit script de traduction en ligne de commande. Lors du lancement du programme on lui passe un mot ou plusieurs entre guillemets en guise d'arguments, et il renvoie la traduction en utilisant une API. Pour l'exercice je voudrais tester mon script avec pytest mais je ne parviens pas à tester l'action d'appeler des arguments en ligne de commande.
Voici le script: (sans mon apikey bien sûr)
#!/usr/bin/python3.6
# -*- coding:Utf-8 -*-
import json
import argparse
from ibm_watson import LanguageTranslatorV3
def translate(text, language):
"""Reçoit un texte et un string décrivant le sens de traduction voulu
Utilise l'API d'IBM Watson Language Translator et renvoie le texte traduit
"""
apikey='******************************'
language_translator = LanguageTranslatorV3(
version='2018-05-01',
iam_apikey=apikey,
url='https://gateway-lon.watsonplatform.net/language-translator/api')
translation = language_translator.translate(
text,
language).get_result()
return json.dumps(translation['translations'][0]['translation']).replace("\"", "")
def main():
"""Fonction principale"""
parser = argparse.ArgumentParser(description="Traducteur en ligne de commande")
parser.add_argument("text", help="Texte à traduire")
parser.add_argument("-e", "--english", action="store_true", help="traduit dans le sens français => anglais")
args = parser.parse_args()
if args.english:
language = "fr-en"
else:
language = "en-fr"
print(translate(args.text, language))
if __name__ == "__main__":
main()
Donc le script fonctionne comme prévu, je voudrais juste trouver comment on peut tester l'appel à un script avec paramètres...
Problème pytest et paramètres en ligne de commande
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.