第一次海报。
我现在转向有关堆栈溢出的第一个问题,因为在寻找答案时我发现资源很少。我正在寻找从C#应用程序执行Selenium
python测试。我不想每次都编译C#Selenium测试。我想利用IronPython脚本进行动态selenium测试。(注意:我几乎没有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浏览器实例并运行了测试。
使用C#、. NET 3.5中的ScriptEngine等API时,我无法获得相同的结果,我认为它的中心在于无法执行main()函数,我猜下面的代码是:
if __name__ == "__main__":
unittest.main()
我尝试过engine.ExecuteFile(),engine.CreateScriptSourceFromString()/
source.Execute()和engine.CreateScriptSourceFromFile()/
source.Execute()。我尝试了scope.SetVariable(“ __name__
”,“
__main__
”)。当我注释掉__name__
py文件的if
部分并在py文件上调用engine.Runtime.ExecuteFile()之后调用engine.CreateScriptSourceFromString(“
unittest.main(module =
None”))时,我确实获得了一些成功。尝试将结果存储在python中并通过scope.GetVariable()访问它们,我还尝试编写一个可以从C#调用以执行单元测试的python函数。
(引擎是ScriptEngine的实例,来源是ScriptSource的实例,等等。)
我对Python,ScriptEngine或unittest模块的无知很容易成为我的麻烦的根源。有谁有运气使用C#中的ScriptEngine等API执行python单元测试?有没有人成功地从ScriptEngine执行“主要”代码?
另外,我读到unittest有一个测试运行程序,它将帮助通过TestResult对象访问错误。我相信语法如下。我还没到这里,但是知道我需要收获结果。
unittest.TextTestRunner(verbosity=2).run(unittest.main())
提前致谢。我认为最好有更多细节而不是更少细节。= P
查看IronPython控制台(ipy.exe)的源代码,看起来最终可以归结为call
ScriptSource.ExecuteProgram()
。您可以ScriptSource
从任何一种ScriptEngine.CreateScriptSourceFrom*
方法中获得一个。
例如:
import clr
clr.AddReference("IronPython")
from IronPython.Hosting import Python
engine = Python.CreateEngine()
src = engine.CreateScriptSourceFromString("""
if __name__ == "__main__":
print "this is __main__"
""")
src.ExecuteProgram()
运行此命令将打印“ this is main ”。
问题内容: 第3、16、17、18和19行用*突出显示的含义是什么。有人可以解释他们的工作吗?我是python和编程新手 问题答案: 这段代码中只有三行用*突出显示,但这是它们的意思: 第一行: 这是在声明 后面 的函数( test_Iframe 和 tearDown )的 类* 。在面向对象的编程中,使用一个类来创建“对象” 。可以将 类 视为数据/过程的抽象,而 对象 是类的特定实例。 ***
在使用maven运行单元测试时,我遇到了这个异常。我的所有测试都没有执行。我的测试类的格式是 我正在运行以下命令来运行此命令: 使用的surefire插件是: 有人知道为什么我的测试没有执行吗?我用的是jUnit 4.8.2和surefire 2.14.1
这是为了返回一个数字数组,该数组是基数组中数组的最高值。当我使用for语句时,我可以让它工作。但我试着简化它,却不明白为什么它不起作用。任何帮助都将受到感谢。
问题内容: 摘要: 当在线程中引发断言错误时,单元测试不会消失。这是有道理的,因为不应允许一个线程使另一线程崩溃。问题是我该如何1)当第一个帮助程序线程崩溃时使整个测试失败,或者2)遍历并确定每个线程完成后的状态(请参见下面的代码)。后者的一种方法是通过每个线程具有状态变量,例如“ boolean [] statuss”,并具有“ statuses [i] == false”表示线程失败(可以扩展
我是新来的React Native,刚刚用React Native init rnapp命令创建了一个应用程序,它发出了许多警告: 然后我转到android文件夹并运行以下命令: 但我明白了: * 有人知道如何修复这个问题,并在这个空应用程序上为Android构建apk文件吗?
问题内容: 这不是让我输入我的名字,但是年龄确实可以。我知道我可以更改语句的顺序,但是还有另一种方法可以做到吗? 问题答案: 您的问题是,下一个int不考虑输入在您的姓名部分中的换行符。因此,名称返回为空白。 您可以通过两种方式更改代码: 要么 我个人喜欢第二种方式。