Проблемы с выполнением юнит-тестов Selenium Python в C # с ScriptEngine (.NET 3.5)

первый раз постер.

Я перехожу к своему первому вопросу о переполнении стека, потому что я нашел немного ресурсов в попытке найти ответ. Я хочу выполнить тесты Selenium Python из приложения C #. Я не хочу каждый раз компилировать тесты C # Selenium; Я хочу воспользоваться сценариями IronPython для динамического тестирования селена. (примечание: у меня мало опыта работы с Python или ScriptEngine и др.)

Selenium выводит юнит-тесты в python в следующей форме:

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()

Я могу запустить его без проблем из командной строки, используя ipy.exe:

ipy test_google.py

И я вижу, как Selenium Server запускает экземпляр браузера Firefox и запускает тест.

Я не могу достичь того же результата, используя ScriptEngine и др. API в C #, .NET 3.5, и я думаю, что это связано с невозможностью выполнить функцию main (). Я предполагаю, что следующий код:

if __name__ == "__main__":
    unittest.main()

Я пробовал engine.ExecuteFile (), engine.CreateScriptSourceFromString () / source.Execute () и engine.CreateScriptSourceFromFile () / source.Execute (). Я попробовал scope.SetVariable ("__name__","__main__"). Я получаю некоторый успех, когда комментирую, если__name__ часть файла py и вызовите engine.CreateScriptSourceFromString ("unittest.main (module = None") после того, как engine.Runtime.ExecuteFile () вызван для файла py. Я попытался сохранить результаты в python и получить к ним доступ через область видимости .GetVariable (). Я также пытался написать функцию Python, которую я мог бы вызвать из C # для выполнения модульных тестов.

(движок - это экземпляр ScriptEngine, источник - экземпляр ScriptSource и т. д.)

Мое незнание Python, ScriptEngine или модуля unittest может легко стать причиной моих неприятностей. Кому-нибудь повезло в выполнении юнит-тестов python с использованием ScriptEngine и т. Д. API в C #? Кто-нибудь успешно выполнил «основной» код из ScriptEngine?

Кроме того, я прочитал, что в unittest есть тестовый прогон, который поможет в доступе к ошибкам через объект TestResult. Я считаю, что синтаксис следующий. Я еще не добрался сюда, но знаю, что мне нужно собрать результаты.

unittest.TextTestRunner(verbosity=2).run(unittest.main())

Заранее спасибо. Я подумал, что было бы лучше иметь больше деталей, чем меньше. = Р

Ответы на вопрос(2)

Ваш ответ на вопрос