première fois poster.problème d'exécution Selenium python unittests en C# avec ScriptEngine (.NET 3.5)
Je me tourne vers ma première question sur le débordement de pile parce que j'ai trouvé peu de ressources pour essayer de trouver une réponse. Je cherche à exécuter des tests Selenium python à partir d'une application C#. Je ne veux pas avoir à compiler les tests C# Selenium à chaque fois; Je veux profiter des scripts IronPython pour tester le sélénium dynamique. (Note: J'ai peu Python ou ScriptEngine, expérience et al.)
sorties Sélénium tests unitaires en python sous la forme suivante:
from selenium import selenium
import unittest
class TestBlah(unittest.TestCase):
def setUp(self):
self.selenium = selenium(...)
self.selenium.start()
def test_blah(self):
sel = self.selenium
sel.open("http://www.google.com/webhp")
sel.type("q", "hello world")
sel.click("btnG")
sel.wait_for_page_to_load(5000)
self.assertEqual("hello world - Google Search", sel.get_title())
print "done"
def tearDown(self):
self.selenium.stop()
if __name__ == "__main__":
unittest.main()
Je peux obtenir ce à courir, pas de problème, à partir de la commande ligne à l'aide ipy.exe:
ipy test_google.py
et je peux voir le feu Selenium Server une instance du navigateur Firefox et le test.
Je ne peux pas obtenir le même résultat en utilisant l'API ScriptEngine, et al en C#, .NET 3.5, et je pense qu'il est centré autour de ne pas pouvoir exécuter la fonction main() Je devine le code suivant:
if __name__ == "__main__":
unittest.main()
J'ai essayé engine.ExecuteFile(), engine.CreateScriptSourceFromString()/source.Execute() et engine.CreateScriptSourceFromFile()/source.Execute(). J'ai essayé scope.SetVariable ("__name__
", "__main__
"). Je reçois un certain succès lorsque je commente la partie __name__
du fichier py et appelle engine.CreateScriptSourceFromString ("unittest.main (module = None") après engine.Runtime.ExecuteFile() est appelé sur le fichier py. J'ai essayé d'enregistrer les résultats dans python et d'y accéder via scope.GetVariable(). J'ai aussi essayé d'écrire une fonction python que je pourrais appeler depuis C# pour exécuter les tests unitaires
(moteur est une instance de ScriptEngine, source Mon ignorance de Python, ScriptEngine, ou du module unittest pourrait facilement être derrière mes problèmes.Quelqu'un a eu de la chance d'exécuter python unittests en utilisant l'API ScriptEngine, etc en C#? exécuté "principal" code de ScriptEngine?
En outre, j'ai lu que Unittest a un coureur de test qui aidera à accéder aux erreurs via un objet TestResult. Je crois que la syntaxe est la suivante. Je ne suis pas encore arrivé ici, mais sache que je vais devoir récolter les résultats.
unittest.TextTestRunner(verbosity=2).run(unittest.main())
Merci d'avance. Je pensais que ce serait mieux d'avoir plus de détails que moins. = P