<p>我终于想出了如何使验证和断言以一种有用的格式报告,以满足我的需要。问题是,当简单地将Selenium IDE录制的脚本导出到Python RC文件中时,测试的默认结构缺少我需要的很多细节。<br/></p>
<p>我改变了:
-将Selenium start和stop方法放在Setup和tearDown类中,这会阻止Selenium使用每个新定义的验证/断言方法重新启动浏览器<br/>
-添加了错误描述,包括通过检查堆栈()</p>
<hr/>
<pre><code>import inspect, unittest, xmlrunner
from selenium import selenium
class TESTVerifications(unittest.TestCase):
@classmethod
def setUpClass(self):
self.selenium = selenium("localhost", 4444, "*iexplore", "https://workflowy.com/")
self.selenium.start()
self.selenium.set_timeout("60000")
print("setUpClass")
self.selenium.window_maximize()
self.selenium.open("/")
def setUp(self):
self.verificationErrors = []
def test_verification1_error(self):
try: self.assertEqual("This application is designed", "This application is designedZZZZ",(inspect.stack()[0][3]) +" text missing 'This application is designed'")
except AssertionError, e: self.verificationErrors.append(str(e))
def test_verification2_error_two_times(self):
sel = self.selenium
##No such element exception
try: self.assertEqual("First failure", "First failureZZZZ",(inspect.stack()[0][3]) +" First failure'")
except AssertionError, e: self.verificationErrors.append(str(e))
try: self.assertEqual("Second Failure", "Second FailureZZZZ",(inspect.stack()[0][3]) +" Second failure'")
except AssertionError, e: self.verificationErrors.append(str(e))
def tearDown(self):
#self.selenium.stop()
self.assertEqual([], self.verificationErrors,"Results: " + str(self.verificationErrors))
@classmethod
def tearDownClass(self):
self.selenium.stop()
print("tearDownClass")
if __name__ == "__main__":
# unittest.main()
unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))
</code></pre>