我正在解决使用Selenium和Python3.5时遇到的一个问题。我试图在自动化中实现unittest框架,但是每当我创建一个测试套件时,测试会在实际执行测试用例之前打开多个浏览器窗口。在
通过消除过程,我将其归结为以下代码部分:
def primary():
primary = unittest.TestSuite()
primary.addTest(unittest.makeSuite(PrimaryMethods, 'setUp'))
primary.addTest(unittest.makeSuite(PrimaryMethods, 'test_ModuleLoop_header'))
primary.addTest(unittest.makeSuite(PrimaryMethods, 'test_ModuleLoop_nonheader'))
primary.addTest(unittest.makeSuite(PrimaryMethods, 'tearDown'))
return primary
if __name__ == '__main__':
TEST_RUNNER = unittest.TextTestRunner()
TEST_SUITE = primary()
TEST_RUNNER.run(primary)
当我删除创建测试套件的部分并使用unittest.main()在if语句中,它只需一个浏览器窗口就可以正常运行。但是,我知道随着我的测试用例变得越来越复杂,我将开始使用测试套件。有没有人知道,在进入测试用例之前,有什么能让安装程序自己运行4次?在
以下是我的设置和拆卸部分:
^{pr2}$我取出正在工作的代码,并将其修改回包含def primary()和测试_跑步者。跑步(主要)代码。我从setUp部分删除了init()调用,这样安装程序中除了加载浏览器之外没有其他内容。当我在整个脚本中放置断点时,我看到的行为是:
我想我已经找到了解决办法。我删除了def primary()中的行,其中setUp和tearDown被添加到测试套件中,现在它在不重复打开浏览器的情况下运行。我猜它是在尝试运行setUp和tearDown作为它们自己的测试用例,但是仍然在testsuite中调用setUp和tearDown。在
我还修改了测试套件创建代码,以更好地适应Python文档的建议。根据我看到的文档,在跨测试用例类收集测试用例时应该使用Makesuite。显然,它仍然会运行而不会出现任何错误。在
所有这些都留给我的是:
相关问题 更多 >
编程相关推荐