当前位置: 首页 > 编程语言 > C#

使用ScriptEngine(.NET 3.5)在C#中执行Selenium pythonunit testing时遇到问题分享

时间:2023-04-10 15:33:54 C#

C#学习教程:使用ScriptEngine(.NET3.5)在C#中执行Seleniumpython单元测试时遇到的问题我转向关于堆栈溢出的第一个问题,因为我发现很少有资源可以找到答案。我正在寻找从C#应用程序执行Seleniumpython测试。我不想每次都必须编译C#Selenium测试;我想利用IronPython脚本进行动态硒测试。(注意:我没有使用Python或ScriptEngine等的经验)Selenium以以下形式在Python中输出单元测试:fromseleniumimportseleniumimportunittestclassTestBlah(unittest.TestCase):defsetUp(self):self.selenium=selenium(...)self.selenium.start()deftest_blah(self):sel=self.seleniumsel.open("http://www.google.com/webhp")sel.type("q","你好世界")sel.click("btnG")sel.wait_for_page_to_load(5000)self.assertEqual("你好世界-Google搜索",sel.get_title())打印"完成"deftearDown(self):self.selenium.stop()if__name__=="__main__":unittest.main()我可以使用ipy.exe从命令行运行,没问题:ipytest_google.py我可以看到SeleniumServer启动firefox浏览器实例并运行测试。我无法使用C#、.NET3.5中的ScriptEngine等API获得相同的结果,我认为其核心是无法执行main()函数我猜以下代码是:if__name__=="__main__":unittest.main()我试过engine.ExecuteFile()、engine.CreateScriptSourceFromString()/source.Execute()和engine.CreateScriptSourceFromFile()/source.Execute()。我尝试了scope.SetVariable("__name__","__name__")。当我注释掉py文件的if__name__部分并在py文件上调用engine.Runtime.ExecuteFile()后调用engine.CreateScriptSourceFromString("unittest.main(module=None")时,我确实取得了一些成功。尝试添加结果存储在python中并通过scope.GetVariable()访问它们。我还尝试编写一个python函数,我可以从C#调用它来执行单元测试。(引擎是ScriptEngine的一个实例,源是ScriptSource的一个实例,等)我对Python、ScriptEngine或unittest模块的无知很容易成为我的问题。有没有人有幸使用像ScriptEngine这样的API在C#中执行python单元测试?有没有人成功地从ScriptEngine执行“主”代码?另外,我读过unittest有一个测试运行器,可以帮助通过TestResult对象访问错误。我相信语法如下。我还没有到这里,但知道我需要获得结果。unittest.TextTestRunner(verbosity=2).run(unittest.main())提前致谢。我认为最好有更多的细节而不是更少的细节。=P查看IronPython控制台(ipy.exe)的源代码,看起来最终归结为调用ScriptSource。执行程序()。您可以从各种ScriptEngine.CreateScriptSourceFrom*方法中的任何一种获取ScriptSource。例如:importclrclr.AddReference("IronPython")fromIronPython.HostingimportPythonengine=Python.CreateEngine()src=engine.CreateScriptSourceFromString("""if__name__=="__main__":print"thisis__main__"""")src.ExecuteProgram()运行这个将打印“Thisismain”。请尝试以下方法:以上是C#学习教程:使用ScriptEngine(.NET3.5)在C#中执行Seleniumpython单元测试遇到的问题,希望大家多多关注——unittest.main(module=__name__)本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: